Received: (at 63595) by debbugs.gnu.org; 1 Apr 2024 01:42:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 31 21:42:30 2024 Received: from localhost ([127.0.0.1]:49177 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rr6gv-0002rh-QJ for submit <at> debbugs.gnu.org; Sun, 31 Mar 2024 21:42:30 -0400 Received: from mail-108-mta43.mxroute.com ([136.175.108.43]:42873) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1rr6gs-0002rX-Np for 63595 <at> debbugs.gnu.org; Sun, 31 Mar 2024 21:42:28 -0400 Received: from filter006.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta43.mxroute.com (ZoneMTA) with ESMTPSA id 18e9752516a0003bea.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Mon, 01 Apr 2024 01:42:18 +0000 X-Zone-Loop: 606b040dcff6101959f99f124469ddea8a9e75e704cd X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=ROTdZJJBQT0qckbXnpQj/JUw00k/EZLFbSnLK75vxkQ=; b=GFO5W9o0lU/ToweaAPRhWjIxvZ ampiqldKQKeWORdouvgKZCz1cHTSxwJCL5xNkCp3e6bbcpoVWU1f73xWAr1ZN+ErNeYo2CEBK2k1h Jv/YJKrOXCR38fpBP0m23EsSG2/36B+RjAzpD2ycQ1wW9Yz0lcrjQDpOGRAfAjrquwmGbDn25ynyp xo+Idlc6dJUMIPJwEv3snpWN82x/opsf2DTYsZsEJYAq6rIih57i4BseFwwOHuEi7b0zPVihsNj6t h30LnOcuHsAJsk6AZbXkMFiSA550xobGNDRor5cgMo/+ubErvfCLMdjACQebovNluY1OcrBWeT003 VjJWxBeg==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Sun, 31 Mar 2024 18:42:15 -0700 Message-ID: <87h6glg8p4.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@HIDDEN X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) --=-=-= Content-Type: text/plain It's been reported that the nickbar (speedbar) window doesn't display the cursor on at least one user's setup. I've found this to be true by default on non-graphic displays. The attached patch should fix the latter regression. As to whether it also fixes the reporter's issue is TBD. It's also been reported that the dframe timer can signal a (wrong-type-argument window-live-p nil) which then gets trapped by the (with-demoted-errors "DFRAME TIMER ERROR: %S"...) in `dframe-timer-fn'. Unfortunately, remediation is trickier here because we've got to inspect calls to `window-live-p' stemming from `speedbar-timer-fn', possibly via `erc-speedbar-insert-user'. (What we really need is a backtrace from the bug reporter.) --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-5.6-Fix-invisible-erc-speedbar-cursor-in-text-termin.patch From 910b6981da743bdc661241f54e26e9b163f239d1 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Sun, 31 Mar 2024 16:32:44 -0700 Subject: [PATCH] [5.6] Fix invisible erc-speedbar cursor in text terminals * lisp/erc/erc-speedbar.el (erc-speedbar--reset-last-ran-on-timer): Use `with-current-buffer' instead of `setf' and `buffer-local-value'. (erc-nickbar-mode, erc-nickbar-enable, erc-nickbar-disable) (erc-speedbar-toggle-nicknames-window-lock): Revise doc string. (erc-speedbar-toggle-nicknames-window-lock): Set `cursor-type' in speedbar buffer. (erc-nickbar-toggle-nicknames-window-lock): New function alias. Note that this name flouts traditional library namespacing conventions. * lisp/erc/erc-status-sidebar.el (erc-status-sidebar-get-window): Use `cursor-type' instead of `internal-show-cursor'. (Bug#63595) --- lisp/erc/erc-speedbar.el | 23 ++++++++++++++--------- lisp/erc/erc-status-sidebar.el | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el index a81a3869436..b156f61d5d9 100644 --- a/lisp/erc/erc-speedbar.el +++ b/lisp/erc/erc-speedbar.el @@ -566,9 +566,8 @@ erc-speedbar--run-timer-on-post-insert (defun erc-speedbar--reset-last-ran-on-timer () "Reset `erc-speedbar--last-ran'." (when speedbar-buffer - (with-suppressed-warnings ((obsolete buffer-local-value)) ; <=29 - (setf (buffer-local-value 'erc-speedbar--last-ran speedbar-buffer) - (current-time))))) + (with-current-buffer speedbar-buffer + (setq erc-speedbar--last-ran (current-time))))) ;;;###autoload(autoload 'erc-nickbar-mode "erc-speedbar" nil t) (define-erc-module nickbar nil @@ -578,10 +577,12 @@ nickbar separate frame. When disabling, close the window or, with a negative prefix arg, destroy the session. -WARNING: this module may produce unwanted side effects, like the -raising of frames or the stealing of input focus. If you witness -such a thing and can reproduce it, please file a bug report with -\\[erc-bug]." +For controlling whether the speedbar window is selectable with +`other-window', see `erc-nickbar-toggle-nicknames-window-lock'. +Note that during initialization, this module may produce unwanted +side effects, like the raising of frames or the stealing of input +focus. If you witness such a thing and can reproduce it, please +file a bug report with \\[erc-bug]." ((add-hook 'erc--setup-buffer-hook #'erc-speedbar--ensure) (add-hook 'erc-insert-post-hook #'erc-speedbar--run-timer-on-post-insert) (add-hook 'speedbar-timer-hook #'erc-speedbar--reset-last-ran-on-timer) @@ -638,8 +639,8 @@ erc-speedbar--dframe-controlled (defun erc-speedbar-toggle-nicknames-window-lock (arg) "Toggle whether nicknames window is selectable with \\[other-window]. -When arg is a number, lock the window if non-negative, otherwise -unlock." +When ARG is a number, lock the window if non-negative. Otherwise, +unlock the window." (interactive "P") (unless erc-nickbar-mode (user-error "`erc-nickbar-mode' inactive")) @@ -648,10 +649,14 @@ erc-speedbar-toggle-nicknames-window-lock ((integerp arg) nil) (t (not (window-parameter window 'no-other-window)))))) + (with-current-buffer speedbar-buffer + (setq cursor-type (not val))) (set-window-parameter window 'no-other-window val) (unless (numberp arg) (message "nick-window: %s" (if val "protected" "selectable")))))) +(defalias 'erc-nickbar-toggle-nicknames-window-lock + #'erc-speedbar-toggle-nicknames-window-lock) ;;;; Nicks integration diff --git a/lisp/erc/erc-status-sidebar.el b/lisp/erc/erc-status-sidebar.el index b7695651e4c..dcdef7cfafc 100644 --- a/lisp/erc/erc-status-sidebar.el +++ b/lisp/erc/erc-status-sidebar.el @@ -192,7 +192,7 @@ erc-status-sidebar-get-window (set-window-parameter sidebar-window 'no-delete-other-windows t) ;; Don't cycle to this window with `other-window'. (set-window-parameter sidebar-window 'no-other-window t) - (internal-show-cursor sidebar-window nil) + (setq cursor-type nil) (set-window-fringes sidebar-window 0 0) ;; Set a custom display table so the window doesn't show a ;; truncation symbol when a channel name is too big. -- 2.44.0 --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available."J.P." <jp@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 25 Jan 2024 21:42:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 25 16:42:24 2024 Received: from localhost ([127.0.0.1]:49368 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rT7UN-00029r-Lp for submit <at> debbugs.gnu.org; Thu, 25 Jan 2024 16:42:24 -0500 Received: from mail-108-mta128.mxroute.com ([136.175.108.128]:43355) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1rT7UL-00029h-WA for 63595 <at> debbugs.gnu.org; Thu, 25 Jan 2024 16:42:23 -0500 Received: from filter006.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta128.mxroute.com (ZoneMTA) with ESMTPSA id 18d4292c2100003727.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 25 Jan 2024 21:42:10 +0000 X-Zone-Loop: c9c5f89b776eda482b17e9f4dba8d3255399e2a2c434 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=FEq3CxK29dSZgMbPxHOOtuxTD/b8q+ayCFHEqnWBqZw=; b=DiX4DGb001yEzE589unzvqw5yv wIPm351u2I9AfUlXrb26BfVp1YaSvqFA530Qgy1Ag0+ckP4Lfsi86d6yy71UO5wg4zDHo8xN2PFu2 l9r8yKiCNvm1F4bwk5Ck2liY6hWZmcB69sf4ysS9AMXc+a+C+YNxSJIgRAHOJWoAwSvEOkF9qmxnt R1wibkE4ebSvRM4TwHrKJsRCYh0fy3RB1dgb3d2xl9ss99NOQWH85iPSMjIMVlisAflUriaPR8uLd hS0BYlAejvt5U2xeCulA9+h12sqh4Yf2xDBewjDDFllNYDCJWZHtIo8xDFXJNIq5iA3mfF3L5jXzq ZwhiE/gg==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <875xzqqc0g.fsf@HIDDEN> (J. P.'s message of "Thu, 18 Jan 2024 18:42:55 -0800") References: <87lehkt97a.fsf@HIDDEN> <875xzqqc0g.fsf@HIDDEN> Date: Thu, 25 Jan 2024 13:41:52 -0800 Message-ID: <87le8d6qfz.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) "J.P." <jp@HIDDEN> writes: > I'm unsure whether there's a regression present on HEAD affecting > erc-speedbar (now the `nickbar' module). I've been noticing the idle > timer only seems to run after user input has been received and dealt > with. IOW, updates don't occur if simply leaving the window open and > otherwise not interacting with Emacs. I suppose we could run the timer > function manually, like on `erc-post-insert-hook' (perhaps guarded by > some debouncing logic), but I'd only want to do so if we can confirm > this isn't a regression. This wasn't a regression but rather a faulty observation on account of my ignorance regarding how idle timers work. In essence: no input, no reset (no next run). To address this, I've implemented something like the more robust manual trigger approach mentioned above: https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=aae131b8 This bug is already closed.
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 19 Jan 2024 02:43:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 18 21:43:07 2024 Received: from localhost ([127.0.0.1]:57092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rQeqY-0004ib-O1 for submit <at> debbugs.gnu.org; Thu, 18 Jan 2024 21:43:06 -0500 Received: from mail-108-mta196.mxroute.com ([136.175.108.196]:33641) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1rQeqW-0004iR-IR for 63595 <at> debbugs.gnu.org; Thu, 18 Jan 2024 21:43:05 -0500 Received: from filter006.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta196.mxroute.com (ZoneMTA) with ESMTPSA id 18d1f99a1ed0003727.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Fri, 19 Jan 2024 02:42:58 +0000 X-Zone-Loop: f5ddcc092f9221f8da301c1f8f605eaf7d6c5a246fd1 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=CZHoejPB0lAnYAA7CIYKsPg6fYDCQJhrn+axn7Jqqzg=; b=bcETkGxq07uMxoCqgxkLQ9ZKfF /kkv6g11TPVsScIGgJsgngtQk8ocOASiljz36SBW2zCtIcZMNQFwB0hZJICEJVbNnJZ4VShbXfYhM wwQVblzIGXmxB8/MpFI9ZtWtaSMg6XAohhgw4jsEIpyR3XjrhUn8BgmvjeoqwHoeKhDNZh++yzKxQ dC9t0a37ihoUHNEVJUeB5VFRAvNDMSQt7I+vpeZ7SFASmNBidtEzixowEsrOOtpNnNtZZ06kUmnE2 gXZBL3fch0cLtLSiZYGw6dBBW40aIJztwIcdnRG69NsDpWuBPVqsNcZr9/diHQSw7GmmKvSUi/+3t e+qC7onQ==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Thu, 18 Jan 2024 18:42:55 -0800 Message-ID: <875xzqqc0g.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) I'm unsure whether there's a regression present on HEAD affecting erc-speedbar (now the `nickbar' module). I've been noticing the idle timer only seems to run after user input has been received and dealt with. IOW, updates don't occur if simply leaving the window open and otherwise not interacting with Emacs. I suppose we could run the timer function manually, like on `erc-post-insert-hook' (perhaps guarded by some debouncing logic), but I'd only want to do so if we can confirm this isn't a regression.
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available."J.P." <jp@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 7 Dec 2023 07:26:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 07 02:26:30 2023 Received: from localhost ([127.0.0.1]:40935 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1rB8mD-0006ax-NV for submit <at> debbugs.gnu.org; Thu, 07 Dec 2023 02:26:30 -0500 Received: from mail-108-mta7.mxroute.com ([136.175.108.7]:42909) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1rB8mA-0006am-U6 for 63595 <at> debbugs.gnu.org; Thu, 07 Dec 2023 02:26:27 -0500 Received: from filter006.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta7.mxroute.com (ZoneMTA) with ESMTPSA id 18c432b773e000190b.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 07 Dec 2023 07:26:11 +0000 X-Zone-Loop: 65dd285c1b215e15455996d059da4c037764634d5ec2 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=06TC4u0+Z9VN1af5fHxEv8fSEwpf87kCI/GfNpwv1zI=; b=G2aAbV8HPqR70bg/WQJbh6RJwT liZKtgn+/8nTfoJfKTpS6+DXnMTJEPvo+ZK8tZb1Om68/ebkADWBo2BqrlmDg/U9qQ6Ozl9fYMHlW 5ZbOqB1rixwCleGwUyV2z8CK/PNyeTZhcygcMgu1Gy1xFVUSrK+j2B9zoASnGC00QYFe248IK5e4U TIYF6iGhzcH3D0+Boo539OOagCuLVWct676csL3cMDIIn2seSNS3UW4uph8x3AlLIfyM3ll9bKB1m wWzKyXf5kSERyj6R5gSabOy30yNAq7BearHOowLBWVA1wR0YoDmdhMNiNZfSQM3FDJ5tP25Ym651z 9ELYFJQQ==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Wed, 06 Dec 2023 23:26:07 -0800 Message-ID: <87v89a5v8w.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@HIDDEN X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) --=-=-= Content-Type: text/plain One thing this feature left unaddressed was the inclusion of all available channel-membership prefixes in the "nickbar" (speedbar). Currently, only members with a "+" or "@" have their nicks augmented. Given the recent improvements to channel-mode parsing, it's now easier to offer the full slate of prefixes. See attached. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0009-5.6-Make-erc-get-user-mode-prefix-more-flexible.patch From 401bc01ace91aac6f3423fc8a04fe7a95b67987c Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Mon, 27 Nov 2023 22:53:00 -0800 Subject: [PATCH 09/11] [5.6] Make erc-get-user-mode-prefix more flexible * lisp/erc/erc-speedbar.el (erc-speedbar-insert-user): Use `erc-get-channel-membership-prefix' so that nicks in the nickbar can have prefixes beyond just voice and op. * lisp/erc/erc.el (erc-get-user-mode-prefix, erc-get-channel-membership-prefix): Rename former to latter because "user-mode" suggests the function somehow involves user modes, but it exclusively concerns channel modes. Also, overload the only parameter in order to avoid redundantly looking up `erc-channel-user' object with every predicate call. In the near future, ERC will likely need to offer an alternate version of this function that returns multiple prefixes instead of just one. (erc-format-@nick): Use `channel-data' parameter. (erc-format-my-nick, erc--format-channel-status-prefix): Use new name for function `erc-get-user-mode-prefix'. (Bug#63595) --- etc/ERC-NEWS | 7 +++++++ lisp/erc/erc-speedbar.el | 4 +--- lisp/erc/erc.el | 30 ++++++++++++++++++++---------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index 540d9e98751..4fdfe7a9dcb 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -433,6 +433,13 @@ The 'fill' module is now defined by 'define-erc-module'. The same goes for ERC's imenu integration, which has 'imenu' now appearing in the default value of 'erc-modules'. +*** Function 'erc-get-user-mode-prefix' renamed. +This utility has been renamed to 'erc-get-channel-membership-prefix' +to better reflect its role of delivering a formatted "status prefix", +like "+" (for "voice"), and to avoid confusion with user modes, like +"+i" (for "invisible"). Additionally, its lone parameter is now +overloaded to accept an 'erc-channel-user' object as well as a string. + *** Hidden messages contain a preceding rather than trailing newline. ERC has traditionally only offered to hide messages involving fools, but plans are to make hiding more powerful. Anyone depending on the diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el index 93be7b9f074..90d7376fc0c 100644 --- a/lisp/erc/erc-speedbar.el +++ b/lisp/erc/erc-speedbar.el @@ -319,9 +319,7 @@ erc-speedbar-insert-user (info (erc-server-user-info user)) (login (erc-server-user-login user)) (name (erc-server-user-full-name user)) - (voice (and cuser (erc-channel-user-voice cuser))) - (op (and cuser (erc-channel-user-op cuser))) - (nick-str (concat (if op "@" "") (if voice "+" "") nick)) + (nick-str (concat (erc-get-channel-membership-prefix cuser) nick)) (finger (concat login (when (or login host) "@") host)) (sbtoken (list finger name info (buffer-name buffer)))) (if (or login host name info) ; we want to be expandable diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 98621302abd..8e7162fec89 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -5815,21 +5815,31 @@ erc-format-nick See also `erc-format-nick-function'." (when user (erc-server-user-nickname user))) -(defun erc-get-user-mode-prefix (user) +(define-obsolete-function-alias 'erc-get-user-mode-prefix + #'erc-get-channel-membership-prefix "30.1") +(defun erc-get-channel-membership-prefix (user) + "Return channel membership prefix for USER as a string. +Ensure returned string has a `help-echo' text property with the +corresponding verbose membership type, like \"voice\", as its +value. Expect USER to be an `erc-channel-user' object or a +string nickname, not necessarily downcased." (when user - (cond ((erc-channel-user-owner-p user) + (when (stringp user) + (setq user (and erc-channel-users (cdr (erc-get-channel-user user))))) + (cond ((null user) "") + ((erc-channel-user-owner user) (propertize "~" 'help-echo "owner")) - ((erc-channel-user-admin-p user) + ((erc-channel-user-admin user) (propertize "&" 'help-echo "admin")) - ((erc-channel-user-op-p user) + ((erc-channel-user-op user) (propertize "@" 'help-echo "operator")) - ((erc-channel-user-halfop-p user) + ((erc-channel-user-halfop user) (propertize "%" 'help-echo "half-op")) - ((erc-channel-user-voice-p user) + ((erc-channel-user-voice user) (propertize "+" 'help-echo "voice")) (t "")))) -(defun erc-format-@nick (&optional user _channel-data) +(defun erc-format-@nick (&optional user channel-data) "Format the nickname of USER showing if USER has a voice, is an operator, half-op, admin or owner. Owners have \"~\", admins have \"&\", operators have \"@\" and users with voice have \"+\" as a @@ -5838,7 +5848,7 @@ erc-format-@nick (when user (let ((nick (erc-server-user-nickname user))) (concat (propertize - (erc-get-user-mode-prefix nick) + (erc-get-channel-membership-prefix channel-data) 'font-lock-face 'erc-nick-prefix-face) nick)))) @@ -5848,7 +5858,7 @@ erc-format-my-nick (let* ((open "<") (close "> ") (nick (erc-current-nick)) - (mode (erc-get-user-mode-prefix nick))) + (mode (erc-get-channel-membership-prefix nick))) (erc--ensure-spkr-prop nick) (concat (propertize open 'font-lock-face 'erc-default-face) @@ -8486,7 +8496,7 @@ erc--format-user-modes (defun erc--format-channel-status-prefix () "Return the current channel membership prefix." (and (erc--target-channel-p erc--target) - (erc-get-user-mode-prefix (erc-current-nick)))) + (erc-get-channel-membership-prefix (erc-current-nick)))) (defun erc--format-modes (&optional no-query-p) "Return a string of channel modes in channels and user modes elsewhere. -- 2.42.0 --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available."J.P." <jp@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 31 Aug 2023 13:33:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Aug 31 09:33:24 2023 Received: from localhost ([127.0.0.1]:55197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qbhnY-0005yG-14 for submit <at> debbugs.gnu.org; Thu, 31 Aug 2023 09:33:24 -0400 Received: from mail-108-mta237.mxroute.com ([136.175.108.237]:37355) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1qbhnV-0005y8-Nz for 63595 <at> debbugs.gnu.org; Thu, 31 Aug 2023 09:33:22 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta237.mxroute.com (ZoneMTA) with ESMTPSA id 18a4bcc379c000d7b6.002 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 31 Aug 2023 13:33:09 +0000 X-Zone-Loop: e106b3378aaf771a6f39d264a2ee97eb05ab2e61803a X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=qBUo2eOpeBoPLx9aVVNj1OtSvSzYj+1bAgsG/47vmk4=; b=B+52DOMVwB+EdefHqNEgDRPXD6 fsxd/BeEjBP4L/Tr4XS2ie28rdbkF9daCp1iJAlUBAFsRrQY+DJyUj6FqBMR0RR9kAGZMTgD4P+HV fqY5pIf1DcFhAMxbSVRFyXqipdo5YcjqX/XqPbGybYQHJRHLIXh+KEEh4hDhg9o4GQBImcii7Y0AQ /RJkzYdCkBjwWjaLSWtpSEGKckyB72wggd6xpyU4lutSV9yxbXjBWSY5Dlfe/ZOmtYcD2YZ+KsHuW Zlp6NFjLXyzVj0kGnLa6Tn6U5zikRGq1mK3Ed0/8SkNVAIc1nYCDPD4rBGBEGPzMtkyDeSsILhzZf PHgT/EkQ==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <CAJf-WoSXYGWpM0_x_KbAJ+8VbKzwy4UPvNAy2gTt3ZP2vxh5DA@HIDDEN> (Corwin Brust's message of "Mon, 21 Aug 2023 08:55:45 -0500") References: <87lehkt97a.fsf@HIDDEN> <87jztvdqxh.fsf@HIDDEN> <CAJf-WoRybO12qgFH7Hd1AZA4jKAeGTLuHdzcQisceLOrPwBd-w@HIDDEN> <87350da3o1.fsf@HIDDEN> <CAJf-WoSXYGWpM0_x_KbAJ+8VbKzwy4UPvNAy2gTt3ZP2vxh5DA@HIDDEN> Date: Thu, 31 Aug 2023 06:33:02 -0700 Message-ID: <87fs3zxrox.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: Corwin Brust <corwin@HIDDEN>, emacs-erc@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: -1.0 (-) Corwin Brust <corwin@HIDDEN> writes: > Moreover, I believe this patch solves the issue (or helps enough I > can't notice it). Since applying I see no difference in how often I'm > disconnected between patched ERC, ERC without nickbar, and hexchat, > all running on the same system connected to the same bouncer. (Prior > to the patch ERC with nickbar running was disconnected much more often > than hexchat). FTR, this was applied as: commit f8b710e54fb8b29f39bf021ccfb993f881b0134a Author: F. Jason Park <jp@HIDDEN> Date: Tue Aug 15 21:14:07 2023 -0700 Prevent unwanted recursion in erc-nickbar-disable lisp/erc/erc-speedbar.el | 112 +++++++++++++++--------- test/lisp/erc/erc-scenarios-status-sidebar.el | 13 ++- test/lisp/erc/resources/erc-scenarios-common.el | 1 + 3 files changed, 79 insertions(+), 47 deletions(-) Thanks.
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 31 Aug 2023 13:31:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Aug 31 09:31:03 2023 Received: from localhost ([127.0.0.1]:55187 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qbhlG-0005uy-Vi for submit <at> debbugs.gnu.org; Thu, 31 Aug 2023 09:31:03 -0400 Received: from mail-108-mta174.mxroute.com ([136.175.108.174]:36677) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1qbhlF-0005uj-2a for 63595 <at> debbugs.gnu.org; Thu, 31 Aug 2023 09:31:02 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta174.mxroute.com (ZoneMTA) with ESMTPSA id 18a4bca1d85000d7b6.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 31 Aug 2023 13:30:51 +0000 X-Zone-Loop: c9f6a538591f4b723329c8c71e0cd867051bc32e5d71 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=mVa6qeFhp+GrQ5fpeaXwyPLz4llE2/+sV6yXZtxt0/4=; b=L8u1SrlRfLDbaYkPLoF6WE/Nzo OXWqKt2M/hx5qW+efJeANBmhtmKKw/hL4Wi3ruxAOchi7HEMAnccoSnlDi0O64rl8O1Q0cMeOoB2R mEGyk8R8v4523uUlTNVUR+Q7IPpTR1HMN6EhFkhNJ3TeQY4c8Lwy4BvUsrN9TAXQVFuWTN0ba/VY6 eINpXUgGldDawlGwRdsURIz3H5U1eYqH3QkLABidNkqHgsnXQCS70wjXWguQtVJjYWkH8QMr5d3Wd sH85jruR2BC/QZ2H3wxzM8YoD7rE7IfCXELak5BkVHvCUJTPGzcgkO7wWKS6v6mDsI900c4o0eIt7 82x3u67A==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Thu, 31 Aug 2023 06:30:43 -0700 Message-ID: <87jztbxrss.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) This feature introduced a couple auxiliary modules to serve as higher level wrappers around newer functionality that was awkwardly bolted onto the existing libraries erc-status-sidebar and erc-speedbar. One of the stated aims of this bug's initial proposal was to unify the UI for this flavor of transitory, command-focused module [1]. However, anyone paying close enough attention will have noticed I've already faltered in this regard. Look at the minor-mode toggle `erc-bufbar-mode' and notice that, when disabling, it tears down the mode completely, destroying all assets. To make it easy to show and hide its window without alternately shutting down and starting anew with every other toggle, I turned to contextually overloading the existing commands `erc-status-sidebar-toggle' and friends to behave specially when `erc-bufbar-mode' is active [2]. Contrast this with the approach taken for `erc-nickbar-mode', whose namesake command is of the all-in-one, kitchen-sink variety. Toggling off merely hides its window and preserves the speedbar session (its hidden frame, buffer, etc.). To actually kill it off completely, you invoke the toggle with a negative prefix argument. Obviously, these must be reconciled somehow, or one must be made to mimic the other. I'm leaning toward changing `nickbar' by adding a second command to toggle it without shutting it down, and then having the main minor-mode toggle always do a full shutdown. This probably aligns more with prevailing expectations and traditional Emacs semantics that assume a nil `erc-nickbar-mode' variable indicates not only a logical disabled activation state but that the mode is completely destroyed. Therefore, unless anyone has any better ideas, I'll provide a patch shortly that does something to this effect. Thanks. [1] To recap, the trend in recent years has been to downplay the use of a module's minor-mode toggle as a viable entry point for enabling its functionality. Rather, there's been a focus on emphasizing membership in `erc-modules' as the preferred means of doing so. The reasons are manifold but ultimately rooted in attaining more predictable behavior and tighter inter-module interop across the board. However, this paradigm necessarily couples a module's activation state to the lifetime of an IRC session, which doesn't always make sense. Some modules, by their very nature, are intrinsically interactive and ephemeral. IOW, they're minor-modes first and modules second. [2] Note the traditional library namespace prefix, which probably hampers discoverability for users of the module. We could alias the transitory toggles (at least) to reflect the new module names, but that may just confuse things further because the new options would all continue to sport library prefixes.
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 21 Aug 2023 13:56:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 21 09:56:08 2023 Received: from localhost ([127.0.0.1]:57344 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qY5O4-0008JZ-66 for submit <at> debbugs.gnu.org; Mon, 21 Aug 2023 09:56:08 -0400 Received: from mail-ot1-f44.google.com ([209.85.210.44]:60628) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mplscorwin@HIDDEN>) id 1qY5O1-0008JC-J6 for 63595 <at> debbugs.gnu.org; Mon, 21 Aug 2023 09:56:06 -0400 Received: by mail-ot1-f44.google.com with SMTP id 46e09a7af769-6bc9811558cso2497664a34.0 for <63595 <at> debbugs.gnu.org>; Mon, 21 Aug 2023 06:56:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692626157; x=1693230957; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=p03wrP5sJp5f4ldgWGjtbe6NsR4NklmfCSfOvF3PDNw=; b=Z6A7Mv11BLbgscWNITooDu2XklPiRw6MuaLJa7tsm8OCZdep+KWWEY4O2mH/POZj3w Sqf8KW7Oyrg1mpXMnWMhveb8ZfFmEZtU3o1oWP5emiPu0qs8QTFV0xbFsM3VO3pXQFtT j+2dGzgeEN6Y45QrpPh2BX+OnvMPLusWHs3g072ifqCGUc0HRDsaNMVmxHSv7IGxEEvw HJT091b1ODfVamcTTY1mH08p/9NQZ7uDr6UojEmTsC0KZK6Jx2/hmBzkN/Z7HJzp6TSp NKu73Z/6hh+gXLVATJj54gKchEvP3SNdDak2NxlRhoPMslsIgMdMu1d9Dul4HLfNnm0Y rLxA== X-Gm-Message-State: AOJu0YzlEgIpnl5IOu97BNzUwSgaxazUGya290T2Qe+Zu3VoEmzoB2Y+ UPmo/2dTy76+y93+gMC8P1A251x0WLzU2wJJVPg= X-Google-Smtp-Source: AGHT+IGDe75lmsNwm4mnnflZHFIXZPN/e3xcVmm2vHdhlJTJ6iO0gVRHEk/NoH80m/IohbDbb8kpM2CzTXOlrwCUeA0= X-Received: by 2002:a05:6870:6490:b0:1bf:607:e0ed with SMTP id cz16-20020a056870649000b001bf0607e0edmr10022630oab.39.1692626157407; Mon, 21 Aug 2023 06:55:57 -0700 (PDT) MIME-Version: 1.0 References: <87lehkt97a.fsf@HIDDEN> <87jztvdqxh.fsf@HIDDEN> <CAJf-WoRybO12qgFH7Hd1AZA4jKAeGTLuHdzcQisceLOrPwBd-w@HIDDEN> <87350da3o1.fsf@HIDDEN> In-Reply-To: <87350da3o1.fsf@HIDDEN> From: Corwin Brust <corwin@HIDDEN> Date: Mon, 21 Aug 2023 08:55:45 -0500 Message-ID: <CAJf-WoSXYGWpM0_x_KbAJ+8VbKzwy4UPvNAy2gTt3ZP2vxh5DA@HIDDEN> Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules To: "J.P." <jp@HIDDEN> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@HIDDEN, 63595 <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: -0.5 (/) Thank you; I think this fixes things and should be applied. On Sun, Aug 20, 2023 at 2:56=E2=80=AFPM J.P. <jp@HIDDEN> wrote: > > Corwin Brust <corwin@HIDDEN> writes: > > > TL;DR: Couldn't apply; can you double check? > > $ curl -L "$url [2]" | git am > > I find it unlikely that none of the hunks apply cleanly. Perhaps this > > [2] https://debbugs.gnu.org/cgi/bugreport.cgi?filename=3D0001-5.6-Prevent= -unwanted-recursion-in-erc-nickbar-disabl.patch;msg=3D23;bug=3D63595;att=3D= 1 > Quite right; thanks for pointing out the improbability of no hunks applying; the command you suggested worked fine. Moreover, I believe this patch solves the issue (or helps enough I can't notice it). Since applying I see no difference in how often I'm disconnected between patched ERC, ERC without nickbar, and hexchat, all running on the same system connected to the same bouncer. (Prior to the patch ERC with nickbar running was disconnected much more often than hexchat).
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 20 Aug 2023 19:56:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 20 15:56:43 2023 Received: from localhost ([127.0.0.1]:54896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qXoXS-0005WJ-0I for submit <at> debbugs.gnu.org; Sun, 20 Aug 2023 15:56:43 -0400 Received: from mail-108-mta181.mxroute.com ([136.175.108.181]:39763) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1qXoXO-0005W9-GP for 63595 <at> debbugs.gnu.org; Sun, 20 Aug 2023 15:56:40 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta181.mxroute.com (ZoneMTA) with ESMTPSA id 18a148548be000d7b6.002 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Sun, 20 Aug 2023 19:56:33 +0000 X-Zone-Loop: 8f3857473f226c33cd58e38fb9d3569524342ebccd21 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=8J8+3V3WEKFuO7s8c/A53FfGhpUSmH6UGK5RX7MshtI=; b=WuubFQoiKzyf5p4BSw/RGxFJWb dBakFkcTwSuI47dQNq7PvY4Kl09886ePSGxjNcdwepzXnSuF5HCGm5UtRC+/ukSSkhhJM2sV0/hlU DxtbpTWGmhHwU3DjunwWQaZfnCjUdcH4KAFesVqrikPnpMBBqokWk95GrswO1Q9n1WPZo+EqcxnN6 eaBkT+5MP3sZSNmElpBSnPDncDjGG1rlO6yp9seCnayOlQPOdNYPuLg0oYgpT7RoGZe4SlEbnQNep qElQ4ZEcXYJGJIgmWwxPRyiFTgKBwxDAASOUgoiX0fpRt5Nn2OC1T3vrFQtaWv2o2WubSqS4bQCRP KCb3H0RQ==; From: "J.P." <jp@HIDDEN> To: Corwin Brust <corwin@HIDDEN> Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <CAJf-WoRybO12qgFH7Hd1AZA4jKAeGTLuHdzcQisceLOrPwBd-w@HIDDEN> (Corwin Brust's message of "Sun, 20 Aug 2023 12:23:30 -0500") References: <87lehkt97a.fsf@HIDDEN> <87jztvdqxh.fsf@HIDDEN> <CAJf-WoRybO12qgFH7Hd1AZA4jKAeGTLuHdzcQisceLOrPwBd-w@HIDDEN> Date: Sun, 20 Aug 2023 12:56:30 -0700 Message-ID: <87350da3o1.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: 63595 <at> debbugs.gnu.org, emacs-erc@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: -1.0 (-) Corwin Brust <corwin@HIDDEN> writes: > TL;DR: Couldn't apply; can you double check? Hm, I'm able to apply that patch atop a563ea8 [1]. $ cd /tmp $ git clone --depth 1 https://git.savannah.gnu.org/git/emacs.git $ cd emacs $ curl -L "$url [2]" | git am Applying: Prevent unwanted recursion in erc-nickbar-disable $ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean $ git log -n2 --oneline 5104bc0 Prevent unwanted recursion in erc-nickbar-disable a563ea8 * lisp/isearch.el (isearch-resume): Add isearch-push-state (bug#65379). However, as I type this, I'm thinking I should have also tried it with a minimal ~/.gitconfig as well as after running ./autogen.sh. That said, I do both in CI (with a slightly updated patch), and it works fine. > detail below and thanks for the insta-response! > > corwi@Avalon MINGW64 /h/emacs-dev/emacs-nt > $ git status > On branch master > Your branch is up to date with 'origin/master'. > > nothing to commit, working tree clean > > corwi@Avalon MINGW64 /h/emacs-dev/emacs-nt > $ git apply /c/Users/corwi/Downloads/0001-5.6-Prevent-unwanted-recursion-in-erc-nickbar-disabl.patch > error: patch failed: lisp/erc/erc-speedbar.el:439 > error: lisp/erc/erc-speedbar.el: patch does not apply > error: patch failed: test/lisp/erc/erc-scenarios-status-sidebar.el:94 > error: test/lisp/erc/erc-scenarios-status-sidebar.el: patch does not apply > error: patch failed: test/lisp/erc/resources/erc-scenarios-common.el:122 > error: test/lisp/erc/resources/erc-scenarios-common.el: patch does not apply > > corwi@Avalon MINGW64 /h/emacs-dev/emacs-nt > $ I find it unlikely that none of the hunks apply cleanly. Perhaps this has something to do with white space/line endings? Maybe you need to change core.autocrlf or similar? [1] https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=a563ea89633963fb20c4159bd5e8da825ffc2248 [2] https://debbugs.gnu.org/cgi/bugreport.cgi?filename=0001-5.6-Prevent-unwanted-recursion-in-erc-nickbar-disabl.patch;msg=23;bug=63595;att=1
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 20 Aug 2023 17:23:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 20 13:23:52 2023 Received: from localhost ([127.0.0.1]:54739 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qXm9X-0004nS-KV for submit <at> debbugs.gnu.org; Sun, 20 Aug 2023 13:23:51 -0400 Received: from mail-ot1-f52.google.com ([209.85.210.52]:47528) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mplscorwin@HIDDEN>) id 1qXm9V-0004nE-Nb for 63595 <at> debbugs.gnu.org; Sun, 20 Aug 2023 13:23:50 -0400 Received: by mail-ot1-f52.google.com with SMTP id 46e09a7af769-6bcbb0c40b1so2191803a34.3 for <63595 <at> debbugs.gnu.org>; Sun, 20 Aug 2023 10:23:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692552222; x=1693157022; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1aErz4Se5n7VzBDDRbaHF9qOqnvAgpOniAoVHY+zLLo=; b=ZbnESVu0Uz/HXI254zo78dSezDImGaRc1E1LcjHEEdB5AtaA5o4I/JUvNuBB5wNteh Na+cW3sRWjzXqLj++9knWc5XVBoXRnESKGQEWrdVLqmClLpGCyBj4v5L+vFP4hH8uqLB VPQZH8wEuMVlcMFFYuMQW/Vp3TcVU94vgXmvHrt8naJ/sC4BOTIIO3K8HHmW9k/+vVIy CzDadfuwIhV8BCuhu5viTTPHEbDC3QX0gO5kvbMbFJYjV8GGLRL9x2OOzZ/o7kin1iY5 mBQUF23tqRC70JJkK6gMWq+0fHqUg7fI8JA3oYhaYqY5knazHPjxkpZtLurNVEkocyAW kxnQ== X-Gm-Message-State: AOJu0YzYeEvCaaUdQnYM0veyROY8ZiP9GQxAPPVfPiIb0BRzZezzXnjL oVq+YpRsaeCmih7LmR2Adtyh7VZcfDFOVESvQTWDtxNP7yY= X-Google-Smtp-Source: AGHT+IGBRxAFcEyhFkolK9fRTL8BHEoFJrUZt6JsH0DDqIvNI9nl2onhNqTWsJgkV0mRfgszijsvlyzkO6RPZt+UptQ= X-Received: by 2002:a05:6830:1309:b0:6bc:fdbd:ccb8 with SMTP id p9-20020a056830130900b006bcfdbdccb8mr6689975otq.13.1692552222067; Sun, 20 Aug 2023 10:23:42 -0700 (PDT) MIME-Version: 1.0 References: <87lehkt97a.fsf@HIDDEN> <87jztvdqxh.fsf@HIDDEN> In-Reply-To: <87jztvdqxh.fsf@HIDDEN> From: Corwin Brust <corwin@HIDDEN> Date: Sun, 20 Aug 2023 12:23:30 -0500 Message-ID: <CAJf-WoRybO12qgFH7Hd1AZA4jKAeGTLuHdzcQisceLOrPwBd-w@HIDDEN> Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules To: "J.P." <jp@HIDDEN> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 63595 Cc: 63595 <at> debbugs.gnu.org, emacs-erc@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.5 (/) TL;DR: Couldn't apply; can you double check? detail below and thanks for the insta-response! On Wed, Aug 16, 2023 at 9:04=E2=80=AFAM J.P. <jp@HIDDEN> wrote: > > Some issues with the `nickbar' module have surfaced that may be related > to another issue involving unexpected connection loss. Thanks to Corwin > for reporting this. > corwi@Avalon MINGW64 /h/emacs-dev/emacs-nt $ git status On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree clean corwi@Avalon MINGW64 /h/emacs-dev/emacs-nt $ git apply /c/Users/corwi/Downloads/0001-5.6-Prevent-unwanted-recursion-in= -erc-nickbar-disabl.patch error: patch failed: lisp/erc/erc-speedbar.el:439 error: lisp/erc/erc-speedbar.el: patch does not apply error: patch failed: test/lisp/erc/erc-scenarios-status-sidebar.el:94 error: test/lisp/erc/erc-scenarios-status-sidebar.el: patch does not apply error: patch failed: test/lisp/erc/resources/erc-scenarios-common.el:122 error: test/lisp/erc/resources/erc-scenarios-common.el: patch does not appl= y corwi@Avalon MINGW64 /h/emacs-dev/emacs-nt $
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 16 Aug 2023 14:04:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 16 10:04:43 2023 Received: from localhost ([127.0.0.1]:41735 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qWH8c-0003hn-TM for submit <at> debbugs.gnu.org; Wed, 16 Aug 2023 10:04:43 -0400 Received: from mail-108-mta140.mxroute.com ([136.175.108.140]:33815) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1qWH8a-0003he-QF for 63595 <at> debbugs.gnu.org; Wed, 16 Aug 2023 10:04:42 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta140.mxroute.com (ZoneMTA) with ESMTPSA id 189fea99aa0000d7b6.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Wed, 16 Aug 2023 14:04:35 +0000 X-Zone-Loop: 41c0d243dc9e67aaa847a0cac01ace96775dad027fc9 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=8M8J8n5QBlJWd1eRSDhxaMy16vKzx73KIA9lBvT0/pQ=; b=hbbGPqAAHeOSEQK9L9rztrylBl mLclJtAdRaNsWxDMeWVkaKYkrmglEIlh0ieCdA4SCa+/6rkf6ZHGj7mFRkWasY8KH+RYdAb6XSz/W 7etuQlDn9UahfwzuXCVUB/e5Ftx4TXpTcfD5YXQhgdqrkwNj9frskiut7WweyTqZ3FLF7i00Tu28U 0OYJ8l/beyMICf4a4GZrkSQyhkwaDkNbamEqboo9kOMafxJzu64DezhL3K68GI+vbVVf6GKYw7eOu n5hdWZrQ5hxiy7IsyylzZFt0vRtLSlUtk8OKNMmDQVWZDsz3XDIq2GiPCV/3fDeZ/a7wjSi3vlJmo nCFlvY3w==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Wed, 16 Aug 2023 07:04:26 -0700 Message-ID: <87jztvdqxh.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@HIDDEN X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) --=-=-= Content-Type: text/plain Some issues with the `nickbar' module have surfaced that may be related to another issue involving unexpected connection loss. Thanks to Corwin for reporting this. It appears that the teardown logic in `erc-nickbar-disable' was calling `dframe-close-frame', `speedbar-set-timer', and `speedbar-timer-fn' repeatedly and unnecessarily, which resulted in redundant scheduling of the same update timer (there should only be one per speedbar instance). Other problems involving the variable `speedbar-update-flag' were also discovered, as well as a possible bug in `dframe-set-timer', which I'll leave for future people familiar with dframe to deal with if necessary. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-5.6-Prevent-unwanted-recursion-in-erc-nickbar-disabl.patch From 645af24230bdf9032f1f0d79ff7e62f5ecf7b72a Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Tue, 15 Aug 2023 21:14:07 -0700 Subject: [PATCH] [5.6] Prevent unwanted recursion in erc-nickbar-disable * lisp/erc/erc-speedbar.el (erc-status-sidebar-mode--unhook): Remove forward declaration. (erc-speedbar--toggle-nicknames-sidebar): Inline `erc-speedbar-close-nicknames-window'. Don't call `erc-speedbar-browser' to avoid excess timers being added. (erc-speedbar--ensure): Inline `speedbar-enable-update' to avoid unneeded call to `speedbar-set-timer', and ensure it runs in `speedbar-buffer'. (erc-speedbar--shutting-down-p): New flag variable to avoid recursive calls to `dframe-close-frame' and friends. (erc-nickbar-mode, erc-nickbar-enable, erc-nickbar-disable): Move logic formerly performed by `speedbar-disable-update' to `erc-speedbar--toggle-nicknames-sidebar'. When disabling, guard against recursive calls to `dframe-close-frame' and friends. (erc-speedbar--get-timers): New helper function. (erc-speedbar--dframe-controlled): Bind `erc-speedbar--shutting-down-p' flag non-nil around call to `erc-nickbar-mode'. Remove excess timer left behind due to incompatible behavior from `dframe-close-frame'. Let caller kill buffer. (erc-speedbar-close-nicknames-window): Remove unused command, new in ERC 5.6 and Emacs 30. (erc-speedbar--destroy-nicknames-frame): New function to perform common teardown. * test/lisp/erc/erc-scenarios-status-sidebar.el (erc-speedbar-close-nicknames-window): Remove forward declaration. (erc-speedbar--get-timers): Add forward declaration. (erc-scenarios-status-sidebar--nickbar): Fix faulty expectations of desired behavior when disabling module. Ensure timers canceled. * test/lisp/erc/resources/erc-scenarios-common.el (erc-scenarios-common--make-bindings): Shadow `timer-idle-list' to avoid polluting global test environment with stray timers. (Bug#63595) --- lisp/erc/erc-speedbar.el | 112 +++++++++++------- test/lisp/erc/erc-scenarios-status-sidebar.el | 13 +- .../erc/resources/erc-scenarios-common.el | 1 + 3 files changed, 79 insertions(+), 47 deletions(-) diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el index f5fbaac767d..88400f034ba 100644 --- a/lisp/erc/erc-speedbar.el +++ b/lisp/erc/erc-speedbar.el @@ -439,7 +439,6 @@ erc-track--switch-fallback-blockers (defvar erc-status-sidebar-buffer-name) (declare-function erc-status-sidebar-set-window-preserve-size "erc-status-sidebar" nil) -(declare-function erc-status-sidebar-mode--unhook "erc-status-sidebar" nil) (defvar erc-speedbar--buffer-options '((speedbar-update-flag . t) @@ -490,36 +489,64 @@ erc-speedbar--toggle-nicknames-sidebar (cl-assert (buffer-live-p speedbar-buffer)) (if (or (and force (< arg 0)) (and (not force) (get-buffer-window speedbar-buffer nil))) - (erc-speedbar-close-nicknames-window nil) + ;; Close associated windows and stop updating but leave timer. + (progn + (dolist (window (get-buffer-window-list speedbar-buffer nil t)) + (unless (frame-root-window-p window) + (when erc-speedbar--hidden-speedbar-frame + (cl-assert + (not (eq (window-frame window) + erc-speedbar--hidden-speedbar-frame)))) + (delete-window window))) + (with-current-buffer speedbar-buffer + (setq speedbar-update-flag nil) + (speedbar-set-mode-line-format))) (when (or (not force) (>= arg 0)) (with-selected-frame speedbar-frame (erc-speedbar--emulate-sidebar-set-window-preserve-size))))) - (when (or (not force) (>= arg 0)) - (let ((speedbar-frame-parameters (backquote-list* - '(visibility . nil) - '(no-other-frame . t) - speedbar-frame-parameters)) - (speedbar-after-create-hook #'erc-speedbar--emulate-sidebar)) - (erc-speedbar-browser) - ;; If we put the remaining parts in the "create hook" along - ;; with everything else, the frame with `window-main-window' - ;; gets raised and steals focus if you've switched away from - ;; Emacs in the meantime. - (make-frame-invisible speedbar-frame) - (select-frame (setq speedbar-frame (previous-frame))) - (erc-speedbar--emulate-sidebar-set-window-preserve-size)))))) + (when-let (((or (not force) (>= arg 0))) + (speedbar-frame-parameters (backquote-list* + '(visibility . nil) + '(no-other-frame . t) + speedbar-frame-parameters)) + (speedbar-after-create-hook #'erc-speedbar--emulate-sidebar)) + (erc-install-speedbar-variables) + ;; Run before toggling mode to prevent timer from being + ;; created twice. + (speedbar-change-initial-expansion-list "ERC") + (speedbar-frame-mode 1) + ;; If we put the remaining parts in the "create hook" along + ;; with everything else, the frame with `window-main-window' + ;; gets raised and steals focus if you've switched away from + ;; Emacs in the meantime. + (make-frame-invisible speedbar-frame) + (select-frame (setq speedbar-frame (previous-frame))) + (erc-speedbar--emulate-sidebar-set-window-preserve-size)))) + (cl-assert (not (cdr (erc-speedbar--get-timers))) t)) (defun erc-speedbar--ensure (&optional force) (when (or (erc-server-buffer) force) (when erc-track-mode (cl-pushnew '(derived-mode . speedbar-mode) erc-track--switch-fallback-blockers :test #'equal)) + (unless (display-graphic-p) + (unless speedbar-update-flag + (erc-button--display-error-notice-with-keys + (erc-server-buffer) + "Module `nickbar' needs `speedbar-update-flag' to be non-nil" + " in non-graphic terminals. Setting to t for the current" + " Emacs session. Customize it to avoid this message.")) + (setq speedbar-update-flag t)) (erc-speedbar--toggle-nicknames-sidebar +1) - (speedbar-enable-update))) + (with-current-buffer speedbar-buffer + (setq speedbar-update-flag t) + (speedbar-set-mode-line-format)))) + +(defvar erc-speedbar--shutting-down-p nil) ;;;###autoload(autoload 'erc-nickbar-mode "erc-speedbar" nil t) (define-erc-module nickbar nil - "Show nicknames in a side window. + "Show nicknames for current target buffer in a side window. When enabling, create a speedbar session if one doesn't exist and show its buffer in an `erc-status-sidebar' window instead of a separate frame. When disabling, close the window or, with a @@ -527,8 +554,8 @@ nickbar WARNING: this module may produce unwanted side effects, like the raising of frames or the stealing of input focus. If you witness -such an occurrence, and can reproduce it, please file a bug -report with \\[erc-bug]." +such a thing and can reproduce it, please file a bug report with +\\[erc-bug]." ((add-hook 'erc--setup-buffer-hook #'erc-speedbar--ensure) (erc-speedbar--ensure) (unless (or erc--updating-modules-p @@ -542,31 +569,44 @@ nickbar (erc-error "Not initializing `erc-nickbar-mode' in %s" (current-buffer)))))) ((remove-hook 'erc--setup-buffer-hook #'erc-speedbar--ensure) - (speedbar-disable-update) (when erc-track-mode (setq erc-track--switch-fallback-blockers (remove '(derived-mode . speedbar-mode) erc-track--switch-fallback-blockers))) (erc-speedbar--toggle-nicknames-sidebar -1) - (when-let ((arg erc--module-toggle-prefix-arg) + (when-let (((not erc-speedbar--shutting-down-p)) + (arg erc--module-toggle-prefix-arg) ((numberp arg)) ((< arg 0))) - (erc-speedbar-close-nicknames-window 'kill)))) + (with-current-buffer speedbar-buffer + (dframe-close-frame) + (setq erc-speedbar--hidden-speedbar-frame nil))))) + +(defun erc-speedbar--get-timers () + (cl-remove #'dframe-timer-fn timer-idle-list + :key #'timer--function + :test-not #'eq)) (defun erc-speedbar--dframe-controlled (arg) + (when speedbar-buffer + (cl-assert (eq speedbar-buffer (current-buffer)))) (when (and erc-speedbar--hidden-speedbar-frame (numberp arg) (< arg 0)) (when erc-nickbar-mode - (erc-nickbar-mode -1)) + (let ((erc-speedbar--shutting-down-p t)) + (erc-nickbar-mode -1))) (setq speedbar-frame erc-speedbar--hidden-speedbar-frame erc-speedbar--hidden-speedbar-frame nil) ;; It's unknown whether leaving the frame invisible interferes - ;; with the upstream teardown procedure. + ;; with the upstream teardown sequence. (when (display-graphic-p) (make-frame-visible speedbar-frame)) - (speedbar-frame-mode arg) - (when speedbar-buffer - (kill-buffer speedbar-buffer) - (setq speedbar-buffer nil)))) + (speedbar-frame-mode arg) ; -1 + ;; As of Emacs 29, `dframe-set-timer' can't remove `dframe-timer'. + (cl-assert (= 1 (length (erc-speedbar--get-timers))) t) + (cancel-function-timers #'dframe-timer-fn) + ;; `dframe-close-frame' kills the buffer but no function in + ;; erc-speedbar.el resets this to nil. + (setq speedbar-buffer nil))) (defun erc-speedbar-toggle-nicknames-window-lock () "Toggle whether nicknames window is selectable with \\[other-window]." @@ -578,20 +618,6 @@ erc-speedbar-toggle-nicknames-window-lock (set-window-parameter window 'no-other-window (not val)) (message "nick-window: %s" (if val "selectable" "protected"))))) -(defun erc-speedbar-close-nicknames-window (kill) - (interactive "P") - (if kill - (with-current-buffer speedbar-buffer - (dframe-close-frame) - (cl-assert (not erc-nickbar-mode)) - (setq erc-speedbar--hidden-speedbar-frame nil)) - (dolist (window (get-buffer-window-list speedbar-buffer nil t)) - (unless (frame-root-window-p window) - (when erc-speedbar--hidden-speedbar-frame - (cl-assert (not (eq (window-frame window) - erc-speedbar--hidden-speedbar-frame)))) - (delete-window window))))) - ;;;; Nicks integration diff --git a/test/lisp/erc/erc-scenarios-status-sidebar.el b/test/lisp/erc/erc-scenarios-status-sidebar.el index 92229121c9f..3a047bf3983 100644 --- a/test/lisp/erc/erc-scenarios-status-sidebar.el +++ b/test/lisp/erc/erc-scenarios-status-sidebar.el @@ -94,7 +94,7 @@ erc-scenarios-status-sidebar--bufbar ;; terminal, and we lack a fixture for that. Please try running this ;; test interactively with both graphical Emacs and non. (declare-function erc-nickbar-mode "erc-speedbar" (arg)) -(declare-function erc-speedbar-close-nicknames-window "erc-speedbar" (kill)) +(declare-function erc-speedbar--get-timers "erc-speedbar" nil) (declare-function speedbar-timer-fn "speedbar" nil) (defvar erc-nickbar-mode) (defvar speedbar-buffer) @@ -154,16 +154,21 @@ erc-scenarios-status-sidebar--nickbar (ert-info ("Core toggle and kill commands work") ;; Avoid using API, e.g., `erc-status-sidebar-buffer-exists-p', ;; etc. for testing commands that call those same functions. - (erc-nickbar-mode -1) + (call-interactively #'erc-nickbar-mode) + (should-not erc-nickbar-mode) (should-not (and speedbar-buffer (get-buffer-window speedbar-buffer))) + (should speedbar-buffer) + (erc-nickbar-mode +1) (should (and speedbar-buffer (get-buffer-window speedbar-buffer))) (should (get-buffer " SPEEDBAR")) - (erc-speedbar-close-nicknames-window 'kill) + (erc-nickbar-mode -1) (should-not (get-buffer " SPEEDBAR")) (should-not erc-nickbar-mode) - (should-not (cdr (frame-list))))))) + (should-not (cdr (frame-list))))) + + (should-not (erc-speedbar--get-timers)))) ;;; erc-scenarios-status-sidebar.el ends here diff --git a/test/lisp/erc/resources/erc-scenarios-common.el b/test/lisp/erc/resources/erc-scenarios-common.el index 972faa5c73f..2eb040d28d9 100644 --- a/test/lisp/erc/resources/erc-scenarios-common.el +++ b/test/lisp/erc/resources/erc-scenarios-common.el @@ -122,6 +122,7 @@ erc-scenarios-common--print-trace (inhibit-interaction t) (auth-source-do-cache nil) (timer-list (copy-sequence timer-list)) + (timer-idle-list (copy-sequence timer-idle-list)) (erc-auth-source-parameters-join-function nil) (erc-autojoin-channels-alist nil) (erc-server-auto-reconnect nil) -- 2.41.0 --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 29 Jul 2023 00:00:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 28 20:00:09 2023 Received: from localhost ([127.0.0.1]:46275 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qPXNQ-0003Nq-Kc for submit <at> debbugs.gnu.org; Fri, 28 Jul 2023 20:00:09 -0400 Received: from mail-108-mta146.mxroute.com ([136.175.108.146]:37343) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1qPXNO-0003E2-7z for 63595 <at> debbugs.gnu.org; Fri, 28 Jul 2023 20:00:07 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta146.mxroute.com (ZoneMTA) with ESMTPSA id 1899ef1f6280004cef.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Sat, 29 Jul 2023 00:00:04 +0000 X-Zone-Loop: bae8f8544f8923673a2f385de1a10cd38659506f1920 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=fjZxvKFgE/Y5lqzq5JEq7mBn/QdLj4EWDxnvVBo+Yt8=; b=d1EY04v/tE+HNpmdVK2cLpnMyn 5CdJ+lhW0JXYQSYSpMzgsHxkrEj/6UOLsMmFmksKyh2rZfiHwPkKqwIrcdX6mvmpqo8/6J/VG+Wg3 GqVO+Psf63mBx3D6khZOf3iAUZWYt8KkDUkux3FczEAsQ/TtfdOCtTL6VquXGSswzi6rgR/76xBbu Jl6lL6ITdOD/TNNTQSKVa0YKZEE+loywt/e/RF9nEXqZxf450hbCtjjcnH1/B6wzJP+kvGbxmN+ZI faENHFwqinz3uGhpH6WwXhZaykyOJ7NM4sWBsD4TEXVDZwYsF8HsUyv8ffOzRs9G7NTqTN9b+BN13 tncXorug==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87o7k0yv4b.fsf@HIDDEN> (J. P.'s message of "Tue, 25 Jul 2023 06:32:36 -0700") References: <87lehkt97a.fsf@HIDDEN> <87o7k0yv4b.fsf@HIDDEN> Date: Fri, 28 Jul 2023 17:00:01 -0700 Message-ID: <871qgrsi2m.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) "J.P." <jp@HIDDEN> writes: > This may come as a shock, but problems exist in the `bufbar' changes > recently introduced (by me) to erc-status-sidebar.el. I've attempted to address these issues in deb74de4 Simplify multi-frame behavior in erc-bufbar-mode Thanks.
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595) by debbugs.gnu.org; 25 Jul 2023 13:32:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jul 25 09:32:46 2023 Received: from localhost ([127.0.0.1]:44907 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qOI9d-0005pd-NK for submit <at> debbugs.gnu.org; Tue, 25 Jul 2023 09:32:46 -0400 Received: from mail-108-mta102.mxroute.com ([136.175.108.102]:46747) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1qOI9a-0005pQ-UB for 63595 <at> debbugs.gnu.org; Tue, 25 Jul 2023 09:32:44 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta102.mxroute.com (ZoneMTA) with ESMTPSA id 1898d4079020004cef.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Tue, 25 Jul 2023 13:32:40 +0000 X-Zone-Loop: caf529c14763c309c8bf617e81cecd6efb66f9f1130a X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=QIXpA43qmWN8el5ptuYtzd7lqkrIYK43+gtLx3RL68U=; b=gIQfNu/xl4FCFxMcAz5qF/VjjI ZYxQQ/UkvSYwwNIPsObnCKijDJU9a9fe/J2KAKd4tA1kvY1KCt2UbUQZVNgPs4CPobqwPVyTN9p5R //odzQtL7862jlol0GrSo6XsoiFrqEMuW6qyzUfkxkyYDiOjmNWiuexvtjIqIlFWVWmYGq5RNsYQ0 duAG6JT/VYsuLDr+tZ9BlSqmdN6H7EtBGSnVaOeUuke7ZuEorSiNpDmYPrJRC77TuF10UYzRz77ob XYs5v8BwUXY7H9QaULtjLOPA4GwcJIMebFSn6IztSdxwzs5t3U6CN2VhNF+vE02uUnCm4SZj2SiST PPyv3iPA==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Tue, 25 Jul 2023 06:32:36 -0700 Message-ID: <87o7k0yv4b.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@HIDDEN X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) --=-=-= Content-Type: text/plain This may come as a shock, but problems exist in the `bufbar' changes recently introduced (by me) to erc-status-sidebar.el. The first involves the new boolean option `erc-status-sidebar-singular'. No matter what its doc string says, the purpose of this option remains difficult to describe and its behavior hard to predict. This makes it only really practical as an internal flag, which is what it should have been from the get-go and how it's been repurposed in the attached patch. Initially, this option was intended to alter the behavior of the minor-mode toggle `erc-bufbar-mode' so that when the option is nil, toggling the mode in a frame where the sidebar is hidden would summon it, regardless of the value of the mode's variable. This kind of extreme DWIM'ness may suit normal, standalone minor modes, but users likely expect mode toggles for global ERC modules to work more or less traditionally. A somewhat related problem stems from my altering the original behavior of existing status-sidebar commands, like `erc-status-sidebar-open', to accommodate and promote `erc-bufbar-mode' as a unified entry point. In retrospect, that probably threatens to anger the rare person who's become accustomed to those commands over the past couple years and who may not be interested in the new module at all (for whatever reason). I've attempted to rectify this in the attached patch so that the newer behavior only takes effect when `erc-bufbar-mode' is active. This means users of the module must now issue an M-x erc-status-sidebar-open RET to see the sidebar in (additional) frames that don't yet have one, but non-module users will still only ever encounter a single sidebar instance in an Emacs session. The last issue involves the sidebar intermittently clobbering the window's scroll position. I've tried to eradicate this while also improving the overall responsiveness by having it refresh when users select another window. Basically, updates were initially tethered to mode-line changes, which often left users with the wrong buffer highlighted whenever updates were few and far between. Although this is now much improved, the change likely adds some overhead, so I've included an escape hatch while we investigate further. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-5.6-Simplify-multi-frame-behavior-of-erc-bufbar-mode.patch From 7b47f05fbc7093db798f2ee421a3082c9febc363 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Sun, 23 Jul 2023 23:09:42 -0700 Subject: [PATCH 1/2] [5.6] Simplify multi-frame behavior of erc-bufbar-mode * lisp/erc/erc-status-sidebar.el (erc-status-sidebar-singular, erc-status-sidebar--singular-p): Replace public option, new in ERC 5.6, with the latter, an internal state flag. (erc-status-sidebar-get-window): Use new name for option turned ordinary variable `erc-status-sidebar--singular-p'. (erc-status-sidebar-close): Add comment. (erc-status-sidebar--open): New function containing the old body of `erc-status-sidebar-open'. (erc-bufbar-mode, erc-bufbar-enable, erc-bufbar-disable): Update variable names. When disabling, always close window on all frames. Don't set mode variable to nil when enabling outside of an `erc-mode' buffer. This may have made some practical sense but was illogical since the `erc--setup-buffer-hook' was left as is, meaning the activation state was still partially enabled. (erc-status-sidebar-open): Move definition to lower down in file, after `erc-bufbar-mode'. When `erc-bufbar-mode' is active, always create a sidebar if needed, even when another frame is already displaying one. (erc-status-toggle-sidebar): When `erc-bufbar-mode' is disabled, revert to pre-5.6 behavior, ignoring bug fixes. When the module is enabled, adopt new behavior of always ensuring the current frame shows a sidebar, even if another frame already has one. (erc-status-sidebar-refresh): Save and restore window start in all windows showing status sidebar buffer after refreshing. Update option and variable names. (erc-status-sidebar--refresh-unless-input): New function to run `erc-status-sidebar-refresh' unless input is pending or the selected window's buffer is a minibuffer. (erc-status-sidebar--post-refresh): Call `erc-status-sidebar-refresh' wrapper `erc-status-sidebar--refresh-unless-input' instead. (erc-status-sidebar-refresh-triggers): Add doc string, noting that the variable is set locally when the option `erc-status-sidebar-highlight-active-buffer' is non-nil. (erc-status-sidebar--highlight-refresh-triggers): New variable containing additional triggers enabled when the option `erc-status-highlight-active-buffer' is non-nil. (erc-status-sidebar-set-window-preserve-size): Update var name to `erc-status-sidebar--singular-p'. (erc-status-sidebar-mode): Run `erc-status-sidebar--post-refresh' on `window-selection-change-functions' globally when highlighting active buffers. (bug#63595) --- lisp/erc/erc-status-sidebar.el | 107 +++++++++++++++++++++------------ 1 file changed, 70 insertions(+), 37 deletions(-) diff --git a/lisp/erc/erc-status-sidebar.el b/lisp/erc/erc-status-sidebar.el index b8bd7b0065e..a82c846ff1a 100644 --- a/lisp/erc/erc-status-sidebar.el +++ b/lisp/erc/erc-status-sidebar.el @@ -45,8 +45,8 @@ ;; Use M-x erc-status-sidebar-kill RET to kill the sidebar buffer and ;; close the sidebar on all frames. -;; In addition to the commands above, you can also try the all-in-one, -;; "DWIM" command, `erc-bufbar-mode'. See its doc string for usage. +;; In addition to the commands above, you can also try the all-in-one +;; entry point `erc-bufbar-mode'. See its doc string for usage. ;; If you want the status sidebar enabled whenever you use ERC, add ;; `bufbar' to `erc-modules'. Note that this library also has a major @@ -130,8 +130,11 @@ erc-status-sidebar-style `erc-status-sidebar-pad-hierarchy' for the above-mentioned purposes. ERC also accepts a list of -functions to preform these roles a la carte. See doc strings for -a description of their expected arguments and return values." +functions to preform these roles a la carte. Since the members +of the above sets aren't really interoperable, we don't offer +them here as customization choices, but you can still specify +them manually. See doc strings for a description of their +expected arguments and return values." :package-version '(ERC . "5.6") ; FIXME sync on release :type '(choice (const channels-only) (const all-mixed) @@ -158,10 +161,12 @@ erc-status-sidebar-click-display-action :key-type symbol :value-type (sexp :tag "Value"))))) -(defcustom erc-status-sidebar-singular t - "Whether to show the sidebar on all frames or just one (default)." - :package-version '(ERC . "5.6") ; FIXME sync on release - :type 'boolean) +(defvar erc-status-sidebar--singular-p t + "Whether to restrict the sidebar to a single frame. +This variable only affects `erc-bufbar-mode'. Disabling it does +not arrange for automatically showing the sidebar in all frames. +Rather, disabling it allows for displaying the sidebar in the +selected frame even if it's already showing in some other frame.") (defvar hl-line-mode) (declare-function hl-line-highlight "hl-line" nil) @@ -178,7 +183,7 @@ erc-status-sidebar-get-window If NO-CREATION is non-nil, the window is not created." (let ((sidebar-window (get-buffer-window erc-status-sidebar-buffer-name - erc-status-sidebar-singular))) + erc-status-sidebar--singular-p))) (unless (or sidebar-window no-creation) (with-current-buffer (erc-status-sidebar-get-buffer) (setq-local vertical-scroll-bar nil)) @@ -214,7 +219,7 @@ erc-status-sidebar-close containing it on the current frame is closed. See `erc-status-sidebar-kill'." (interactive "P") - (mapcar #'delete-window + (mapcar #'delete-window ; FIXME use `mapc'. (get-buffer-window-list (erc-status-sidebar-get-buffer) nil (if all-frames t)))) @@ -223,10 +228,8 @@ erc-status-sidebar-writable `(let ((buffer-read-only nil)) ,@body)) -;;;###autoload -(defun erc-status-sidebar-open () - "Open or create a sidebar." - (interactive) +(defun erc-status-sidebar--open () + "Maybe open the sidebar, respecting `erc-status-sidebar--singular-p'." (save-excursion (if (erc-status-sidebar-buffer-exists-p) (erc-status-sidebar-get-window) @@ -237,11 +240,15 @@ erc-status-sidebar-open ;;;###autoload(autoload 'erc-bufbar-mode "erc-status-sidebar" nil t) (define-erc-module bufbar nil "Show `erc-track'-like activity in a side window. -When enabling, show the sidebar immediately if called from a -connected ERC buffer. Otherwise, arrange for doing so on connect -or whenever next displaying a new ERC buffer. When disabling, -hide the status window if it's showing. With a negative prefix -arg, also shutdown the session." +When enabling, show the sidebar immediately in the current frame +if called from a connected ERC buffer. Otherwise, arrange for +doing so on connect or whenever next displaying a new ERC buffer. +When disabling, hide the status window in all frames. With a +negative prefix arg, also shutdown the session. Normally, this +module only allows one sidebar window in an Emacs session. To +override this, use `erc-status-sidebar-open' to force creation +and `erc-status-sidebar-close' to hide a single instance on the +current frame only." ((unless erc-track-mode (unless (memq 'track erc-modules) (erc--warn-once-before-connect 'erc-bufbar-mode @@ -249,30 +256,38 @@ bufbar " This will affect \C-]all\C-] ERC sessions." " Add `track' to `erc-modules' to silence this message.")) (erc-track-mode +1)) - (add-hook 'erc--setup-buffer-hook #'erc-status-sidebar-open) + (add-hook 'erc--setup-buffer-hook #'erc-status-sidebar--open) (unless erc--updating-modules-p (if (erc-with-server-buffer erc-server-connected) - (erc-status-sidebar-open) - (setq erc-bufbar-mode nil) + (erc-status-sidebar--open) (when (derived-mode-p 'erc-mode) (erc-error "Not initializing `erc-bufbar-mode' in %s" (current-buffer)))))) - ((remove-hook 'erc--setup-buffer-hook #'erc-status-sidebar-open) - (erc-status-sidebar-close erc-status-sidebar-singular) + ((remove-hook 'erc--setup-buffer-hook #'erc-status-sidebar--open) + (erc-status-sidebar-close 'all-frames) (when-let ((arg erc--module-toggle-prefix-arg) ((numberp arg)) ((< arg 0))) (erc-status-sidebar-kill)))) +;;;###autoload +(defun erc-status-sidebar-open () + "Open or create a sidebar window in the current frame. +When `erc-bufbar-mode' is active, do this even if one already +exists in another frame." + (interactive) + (let ((erc-status-sidebar--singular-p (not erc-bufbar-mode))) + (erc-status-sidebar--open))) + ;;;###autoload (defun erc-status-sidebar-toggle () "Toggle the sidebar open/closed on the current frame. -Do this regardless of `erc-status-sidebar-singular'." +When opening and `erc-bufbar-mode' is active, create a sidebar +even if one already exists in another frame." (interactive) (if (get-buffer-window erc-status-sidebar-buffer-name nil) (erc-status-sidebar-close) - (let (erc-status-sidebar-singular) - (erc-status-sidebar-open)))) + (erc-status-sidebar-open))) (defun erc-status-sidebar-get-channame (buffer) "Return name of BUFFER with all leading \"#\" characters removed." @@ -413,11 +428,10 @@ erc-status-sidebar-refresh erc-status-sidebar-pad-hierarchy)) (v v))) (chanlist (apply sort-fn (funcall list-fn nil) nil)) - (window nil) - (winstart nil)) + (windows nil)) (with-current-buffer (erc-status-sidebar-get-buffer) - (setq window (get-buffer-window nil erc-status-sidebar-singular) - winstart (and window (window-start window))) + (dolist (window (get-buffer-window-list nil nil t)) + (push (cons window (window-start window)) windows)) (erc-status-sidebar-writable (delete-region (point-min) (point-max)) (goto-char (point-min)) @@ -443,9 +457,10 @@ erc-status-sidebar-refresh 0 cnlen 'help-echo "mouse-1: switch to buffer in other window" channame) (funcall insert-fn channame chanbuf chanlist))) - (when winstart - (set-window-point window winstart) - (with-selected-window window (recenter 0))) + (when windows + (pcase-dolist (`(,window . ,winstart) windows) + (set-window-point window winstart) + (with-selected-window window (recenter 0)))) (when (and erc-status-sidebar-highlight-active-buffer (marker-buffer erc-status-sidebar--active-marker)) (goto-char erc-status-sidebar--active-marker) @@ -519,14 +534,28 @@ erc-status-sidebar-refresh-triggers erc-kill-server-hook erc-kick-hook erc-disconnected-hook - erc-quit-hook)) + erc-quit-hook) + "Hooks to refresh the sidebar on. +This may be set locally in the status-sidebar buffer under +various conditions, like when the option +`erc-status-sidebar-highlight-active-buffer' is non-nil.") + +(defvar erc-status-sidebar--highlight-refresh-triggers + '(window-selection-change-functions) + "Triggers enabled with `erc-status-sidebar-highlight-active-buffer'.") + +(defun erc-status-sidebar--refresh-unless-input () + "Run `erc-status-sidebar-refresh' unless there are unread commands. +Also abstain when the user is interacting with the minibuffer." + (unless (or (input-pending-p) (minibuffer-window-active-p (selected-window))) + (erc-status-sidebar-refresh))) (defun erc-status-sidebar--post-refresh (&rest _ignore) "Schedule sidebar refresh for execution after command stack is cleared. Ignore arguments in IGNORE, allowing this function to be added to hooks that invoke it with arguments." - (run-at-time 0 nil #'erc-status-sidebar-refresh)) + (run-at-time 0 nil #'erc-status-sidebar--refresh-unless-input)) (defun erc-status-sidebar-mode--unhook () "Remove hooks installed by `erc-status-sidebar-mode'." @@ -541,7 +570,7 @@ erc-status-sidebar-set-window-preserve-size Note that preserve status needs to be reset when the window is manually resized, so `erc-status-sidebar-mode' adds this function to the `window-configuration-change-hook'." - (when (and (eq (selected-window) (let (erc-status-sidebar-singular) + (when (and (eq (selected-window) (let (erc-status-sidebar--singular-p) (erc-status-sidebar-get-window))) (fboundp 'window-preserve-size)) (unless (eq (window-total-width) (window-min-size nil t)) @@ -563,6 +592,10 @@ erc-status-sidebar-mode (add-hook 'window-configuration-change-hook #'erc-status-sidebar-set-window-preserve-size nil t) + (when erc-status-sidebar-highlight-active-buffer + (setq-local erc-status-sidebar-refresh-triggers + `(,@erc-status-sidebar--highlight-refresh-triggers + ,@erc-status-sidebar-refresh-triggers))) (dolist (hk erc-status-sidebar-refresh-triggers) (add-hook hk #'erc-status-sidebar--post-refresh)) -- 2.41.0 --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595-done) by debbugs.gnu.org; 14 Jul 2023 02:07:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jul 13 22:07:59 2023 Received: from localhost ([127.0.0.1]:41087 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qK8Dv-0000gV-HE for submit <at> debbugs.gnu.org; Thu, 13 Jul 2023 22:07:59 -0400 Received: from mail-108-mta181.mxroute.com ([136.175.108.181]:42017) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1qK8Dr-0000gJ-8N for 63595-done <at> debbugs.gnu.org; Thu, 13 Jul 2023 22:07:58 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta181.mxroute.com (ZoneMTA) with ESMTPSA id 189522787e90004cef.001 for <63595-done <at> debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Fri, 14 Jul 2023 02:07:49 +0000 X-Zone-Loop: 3f60c6cd01287d375eaaf9431f400fd1e6aedd64b514 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=O40614c5LW5s4eKAeVrBACzhVjTZsn9jgbu5wYNh4Gs=; b=W4305aLiuzX1V9KD9f9ZNPH99+ rt2EEwHd6aKiZDsipNtHKq+yRNowtlnF7tdhPJXn7td6I2rqU6YsGx3+LAMYP/oZrnDilupppmVrq 9AyjZvr5q3vEzt6AoGwJwnFbcUy4N+T9SJTfbq+AywDgvgCxPPNoSfFaWvoO5Anf0fwAtdveMLY0I sx/Mh43QaVo3wkgSGhLssCqM4a79z5j27Z2YZWI0ZAObbLFKktcZmBpw4awMrAImIqev3BopU7UR+ SK98XfU3byZyN8gU/cemOXNAb4oSCxGHucvV+Jb8eRQVGqhA29hPdtTmQlOoUnaZOnUJ8q/K6wvbk +T+elf5g==; From: "J.P." <jp@HIDDEN> To: 63595-done <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Thu, 13 Jul 2023 19:07:46 -0700 Message-ID: <87r0pbs0st.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 63595-done Cc: emacs-erc@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: -1.0 (-) A more refined version of these changes has been installed [1]. However, they're more likely than most to be imperfect due to their relative complexity and the lack of effective tests, not to mention the kludgy nature of the new speedbar module (whose frame we're hiding in favor of showing its buffer in a side window). Hopefully, these new features will lead to increased use, which should help exorcise the worst of their demons. Closing (for now). [1] https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=ded35c2d https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3c70e85d
"J.P." <jp@HIDDEN>
:"J.P." <jp@HIDDEN>
:Received: (at 63595) by debbugs.gnu.org; 19 May 2023 20:48:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 19 16:48:14 2023 Received: from localhost ([127.0.0.1]:57502 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1q071J-0006mR-SC for submit <at> debbugs.gnu.org; Fri, 19 May 2023 16:48:14 -0400 Received: from mail-108-mta134.mxroute.com ([136.175.108.134]:39343) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1q071H-0006lZ-2q for 63595 <at> debbugs.gnu.org; Fri, 19 May 2023 16:48:11 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta134.mxroute.com (ZoneMTA) with ESMTPSA id 18835c503d300074ee.001 for <63595 <at> debbugs.gnu.org> (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Fri, 19 May 2023 20:48:04 +0000 X-Zone-Loop: 43d1da637cfe96d7c85839160dd2ebaeb2f60b0687d3 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=zb7WkyPvdnUCFH1zeZ3qsSF1uRQXSHrUxZDR5t/wL1U=; b=VP7Dy1R4RfiZwWHwrWouAeKqND gjXgMZ5pE+uD+g9L+MBO1dAhtuWnsRJRO+VfOGRLzSTR5ICQIFF0q+chsSEEyDJMoWhttDHYMk71f vc3m7byxQnpizubTcE6wCJN7UGg+huPxZsizprsht7/9TJf+Z4k5+e5sf2mzoBpk8QvDzKhk66GTD Z+KXxhd8T9VrMrIkEcrKWEPFnM5IgUU3YrTN/Pq29KB6U/9eQmvRz6RwMCWqmzLAV4laIm4IO+VU0 wM8wk+Kzq4GBcDaGPtu9Tn2KGSKCtNCQbl0REgnVinwvkHUmUzTl2EaZmMtVHIFNR/8hBW4o5uxri XWrYUhYg==; From: "J.P." <jp@HIDDEN> To: 63595 <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Fri, 19 May 2023 13:47:59 -0700 Message-ID: <874jo8t5ds.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@HIDDEN X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 63595 Cc: emacs-erc@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: -1.0 (-) Screenshots (modus themed but otherwise vanilla): graphical: https://debbugs.gnu.org/cgi/bugreport.cgi?filename=erc-sidebar-graphical.png;bug=63595;att=1;msg=6 terminal: https://debbugs.gnu.org/cgi/bugreport.cgi?msg=6;att=2;filename=erc-sidebar-terminal.png;bug=63595
bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.Received: (at 63595-quiet) by debbugs.gnu.org; 19 May 2023 20:44:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 19 16:44:17 2023 Received: from localhost ([127.0.0.1]:57496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1q06xV-0006cP-9z for submit <at> debbugs.gnu.org; Fri, 19 May 2023 16:44:17 -0400 Received: from mail-108-mta210.mxroute.com ([136.175.108.210]:38945) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1q06xT-0006c9-2r for 63595-quiet <at> debbugs.gnu.org; Fri, 19 May 2023 16:44:15 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta210.mxroute.com (ZoneMTA) with ESMTPSA id 18835c160b000074ee.001 for <63595-quiet <at> debbugs.gnu.org> (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Fri, 19 May 2023 20:44:05 +0000 X-Zone-Loop: 949127382ee84afddbfce6a2ae914e9ad6a5e2ae0b82 X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=0/3HGSRZsc2VemNFldCZ3gcdhk3JK7JG0DCcELpPtH0=; b=OyE0688KKjdXpUr+JC2P8EhE2r xulI9cmwveY4mxisFrrQa5unEVbm5pvTyAlqbQMbojV8+4MaJRt/mhQ/nuRExqbzOzVUCltoMBZLs Hd37g7o4pMFp2HzB9RN+C2T6kzfq2dqdtjT1H6uxIkwNVg80P5j3ez9fkAZOeMB1PGo0SQgKpYBDq zrLexhIJ+rcv4KiK6s21pX1mp0DjC4gTBhfVvAdn220FCAFB6Q311B9hh4+KRypX7vNRxrfFrdgdJ vLR3Ukikg3HMuNNQKb/0poVKQrCDCbIkNP4u1faSNdsB8MxDz+ldOrzkVIX6+wDF5mj54um4KSMiO ezVlpVzw==; From: "J.P." <jp@HIDDEN> To: 63595-quiet <at> debbugs.gnu.org Subject: Re: bug#63595: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules In-Reply-To: <87lehkt97a.fsf@HIDDEN> (J. P.'s message of "Fri, 19 May 2023 12:25:29 -0700") References: <87lehkt97a.fsf@HIDDEN> Date: Fri, 19 May 2023 13:44:01 -0700 Message-ID: <87bkigt5ke.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@HIDDEN X-Debbugs-Envelope-To: 63595-quiet 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> --=-=-= Content-Type: text/plain Screenshot storage: --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=erc-sidebar-graphical.png Content-Transfer-Encoding: base64 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 aUEZ1VXVoG2cmDR2/feCtWMLnntrEjZKeznIhRDiISEzpOKhc+HCBaKiomjRogVxcXF6Za0cLVky ORCAx4fu5HimmjMXynC0M69NSG3MmP9KewrV12jZawtFpdf0tndxtGTF3BCyz5XiP3gHC+NP8s8X fGhmacLQoUMZO3YsnTp1YuHChVhaWhrc5rNHczj8xc9UV1YDsOe9nQBY2lrSf8YzAFRVVJG++zi5 x85RXV2Ds48zgc90wMzK7Pdks5S0bb9QcKYAIyMFLVzt8O7ui1Mbpwap/2RSOif3nKDf9L+Rte80 546exdjUmL5TnsbIuPa7bU1VNe/1nkSrx9sw/P3X6zVu5VdK+OL1/5C59ygt3V1o6eGClV1zXfn/ DZpOgeo8AEW5l/nXDx/h7OeuK1dfyGdj9LtczMjBxNwU1ye86T97NC09XADIO3WGpHcSOPfLaa6q S/HrG8yQt6Mxsajt33u9J9HjlefYF/8Vl7NzcX/Sj2HL/0WzlrYGlddUVbN76XqOfPEdWq0Wr87t GbT4FcytrQzav/pCPp+9MIeoTQv5cuaH/Jp8GJcAT8ZvWWJQfIQQ4kEmM6TiobJhwwb69OlDZGQk a9euxc7O7qZ1amq07E8rIOtsKdZWJrR2+iNxLC6rJH6Lipdjf8bS3JhpL/rdcj9ertZ0CWxJuaaa zLOlAHh7e/P999/TqlUrunTpwoEDBwxut42TDT5/8cPKrllt/Z3b4N+3Hd6hPrp1ft50kMwfT9Oi tR2tAlrVJpmJP+vKD206SN6pC3h08sQj2JPywjLKCkobrH7dev89QNa+TJrZN6O50kaXjAJUVlwj X3Weixln6j12Gye/i7GJCTHH1jE2YT7qC/l65eO3LGHW0TXMOrqGZi1b3LT9rv+3lpbuzsw6uprp B+Pp8NxfdMkgQH52Lh2e68nrP37EzF9WczHjDPtXbterIzVhF/9YFcMbx9djbGbKtjmfGly+a8ka svelMSX5fWakfoaFTTO+nr+iXvsvuXiFdS8t4vG/dWPWL6uJ+HCqwfERQogHmcyQiodGfHw8H374 ISkpKTg4ONxynV8yijDutAkAhQIWTgrE1MSIa5U1AFwqrCByfioAj7e1RWlvcdv9XZ9Vzb10lSd8 ahMkIyMjpk6dyoABA+jduze7d+8mMDCwzrbburTA1qUF+dmXKL9Shlfnttgo/7jGs7yonPMncrG0 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 lW2vv06NypV5+M03+fHUKXWkiIiIKJCKtfnffkvloUON5WxSklX56OXL8XntNbxGjCA7N5eP+/cH 4FxSEiaTCY+KFYs+4EwmxnTsyLLBg+k6Zw6RZ86o00VERP7kNIdUrAz5y1+KnUPat2VLAidM4InA QKq4uABQzdUVi8VCQkoKnsWE0tMXLvDqsmV0bdqUul5e6nQREZE/OY2QSonZ29kx5ZlnmPjll2Tn 5ADgaDYT5OPDmn37iqy7aAWqkHwAABrJSURBVPt2OsyaxWtPPsnH/ftTwclJHSoiIqJAKlJy/9e8 Oc4ODizZudO4bUbPnoxfuZKwyEiyc3I4cvYsvT74gIyrVwGYtGoVW48dY/ekSXRs3FidKCIiIoBO 2csNFnz3HaG7dxt/13Z3Z9+UKfnWM5lMTO3enVc+/ZS+LVtSzsGBdvfdx2eDBzPpyy/ps3Ahdb28 mNClC+UcHAB4+bHHqOXurk4WERER61wBeP4eTPMuDnkWM9DUYrF8qO66Ny1ZsoR+/fqpI0RERO8P UrpB02QaCuwHsoGreZbsvItO2YuIiIjIbaVAKiIiIiIKpCIiIiKiQCoiIiIiokAqIiIiIgqkIiIi IiIKpCIiIiKiQCoiIiIiokAqIiIiIgqkIiIiIiIKpCIiIiKiQCoiIiIiokAqIiIiIgqkIiIiIiIK pCIiIiKiQCoiIiIiokAqIiIiIgqkIiIiIiIKpCIiIiKiQCoiIiIiokAqIiIiIgqkIiIiIiIKpCIi IiJy9zABnoD5hsUhz2IGmloslg/VXSIiIiJic9A0mYYC+4Fs4GqeJTvvYra1wdDQUPXqPSwsLEyd ICIi+XTs2FGdIGXOXJKVH3/8cfXYPSg8PByAESNGqDNERMQwd+5cvf/LLecLW2gOqYiIiIjcVgqk IiIiIqJAWhYsFsttrS9/Tv3792fPnj23fTvi4uIYPnw4nTp14vnnn+eHH364o/opNzfXpvVOnz7N 2bNny6z/lyxZwnvvvXdTjyE7O5t58+aRkZFxzx3HJ06coHPnzhw5cuSefr7eyv4XkdJlLmmFDRs2 sG3bNpycnIzb/Pz8ePHFFwFYtGgRv/76K46OjmRmZuLj40PPnj2pXLmysX5UVBQbN27k3LlzVKlS hfbt23P//ffb/Cawdu1aIiMjMZlM1KlTh65du+Lm5masc+7cOdasWcOQIUNuqlNutf69rFWrVqxZ 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 /POf/+TRRx9l1apV+YJhREQE06dPZ926dZjNZj744AOrbTebzaxbt45Zs2bd1It2YmIiaWlp+Pn5 FVi+detWHn74YVq2bMnWrVutAtX58+exWCz89ttvREZGGiN8eQNdYfUBgoODcXJyYteuXaxZs4a2 bduW6MPuokWLqFGjBqtXr2b58uW0a9eOChUqGOUhISHGfils1LWo/V/c86Oo48OWQFpc/xXX/q3u /ytXrvDYY4+xdetWvv32W4KDg63Ki3p+16lThxo1aljN5966dStt2rQplTMZubm5xMfH4+3tTWho KNu2baNu3brGB4ybrX/jGcP9+/czf/58goOD6dOnD87OziUqL0tt27alYcOGvPjii/Tq1YsWLVqU Whi9LiUlhdDQUAIDA5k4cSLPPfecUfbzzz+zfv16nnvuOd544w369u1LVlYWUoYjpLt27SIiIsL4 e9y4cVafMtetW8fXX39NUlISLVq0oHfv3sanJpPJZPUCWFKBgYEMHz6cr776ijfffJNHHnmEJ554 ArPZbHN9gIyMDBISEvD09OT06dOlekrnwIEDREVF4evr+4edSrqTODs7s2bNmgLn1q1fv56dO3eS lZXFnj17WLRoEX/961/5y1/+YlP53//+d5KTk63abNq0aal+h2piYiIeHh4cPnzYmCubd+R26NCh 1K9fHwAfHx98fHys1hk2bJhxmvnxxx9nzZo1RtkjjzwCQHp6OjExMdSuXTvfab8hQ4YUWP/XX3+l UaNGODs7c/78ef773/9y4cIFYmNjSUtLK/aDT0pKCt999x2bN2/GbDZTqVIlBg0axHvvvcezzz5b bHlx2wfXTiHPnj3beBPq168f/fr147XXXivRPti7dy9169a1moqTd5RvypQpBAUFGcdbXs8//zwe Hh4AdO7c2QjZKSkpbN++nU2bNuHg4ICbmxsPPfQQFy5cKNG2nTt3Lt8UietiYmJwcnLC09OT4OBg Zs+eTW5uLnZ2dnh7e3P+/Hmio6Px9vbmxIkTpKSkcOHCBaO9ournHSVdsmQJFy5cKPHcbS8vL8LD w/n555+5//77jeOxJIra/8U9P27l+LCl/4pqvzT2f1ZWFh06dOD999/n4sWL9O7dm88//9zm53fP nj1Zu3YtLVu2NAYwSmt+YmZmJmazGTs7O/bt20d6ejq+vr75Bm5KWv/q1avGOj/++CPff/89w4YN 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 rkJggg== --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=erc-sidebar-terminal.png Content-Transfer-Encoding: base64 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 --=-=-=--
Received: (at submit) by debbugs.gnu.org; 19 May 2023 19:25:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri May 19 15:25:54 2023 Received: from localhost ([127.0.0.1]:57435 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1q05ja-0004Kr-HF for submit <at> debbugs.gnu.org; Fri, 19 May 2023 15:25:53 -0400 Received: from lists.gnu.org ([209.51.188.17]:54098) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jp@HIDDEN>) id 1q05jV-0004Ke-Se for submit <at> debbugs.gnu.org; Fri, 19 May 2023 15:25:49 -0400 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 <jp@HIDDEN>) id 1q05jV-0003yx-Ey for bug-gnu-emacs@HIDDEN; Fri, 19 May 2023 15:25:45 -0400 Received: from mail-108-mta11.mxroute.com ([136.175.108.11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <jp@HIDDEN>) id 1q05jO-0005YW-Nz for bug-gnu-emacs@HIDDEN; Fri, 19 May 2023 15:25:45 -0400 Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta11.mxroute.com (ZoneMTA) with ESMTPSA id 1883579758200074ee.001 for <bug-gnu-emacs@HIDDEN> (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Fri, 19 May 2023 19:25:32 +0000 X-Zone-Loop: eec7dda6ba983e849cec5c7021dd9f3b963fa6e4e9fe X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:Subject:To:From:Sender: Reply-To:Cc:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=reOVYRocD84tqZU6Afp4MUToMaIkxYinxEkfAKJ6TEQ=; b=JWB0abbAfp98Slzy+ZQWJUY2pv tEBXPa65Rq/NP6nB1fU6/+hHUBsUtheeb5MoQVHR40jzE+eJhe4Dmv0UOfn+m62bNxe1VW1uuUlmT XAB1AwzSXVoCNW+V9WXYxY8kGncTwAzfmF5YHkTf+Q4YjJjlLPWtT5xmDbfKULqII4R19v6/uNGB1 JA8JrJqdIuN/fGcYwR7e8K1XSdoFHWTtNhDWfEE+J47GN2USEtY43xp1QpI3Qkkt8gGB1dDlh6vYo FrMkk24HC5++Og2JpEzxk0pyTzZoghmB+FBth71ZF8qjTluwptnYhxjEHyknC0vteueMkPqXTVRaj NVDIEzCw==; From: "J.P." <jp@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: 30.0.50; ERC 5.6: Add buffer-list and nick-list modules X-Debbugs-CC: emacs-erc@HIDDEN Date: Fri, 19 May 2023 12:25:29 -0700 Message-ID: <87lehkt97a.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@HIDDEN Received-SPF: pass client-ip=136.175.108.11; envelope-from=jp@HIDDEN; helo=mail-108-mta11.mxroute.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit 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: -2.4 (--) --=-=-= Content-Type: text/plain Tags: patch Severity: wishlist (This bug could just as well be titled "Make ERC look more like standalone clients," although that's perhaps a bit clickbaity.) Hi, Newcomers to ERC are occasionally dumbfounded by the absence of a certain pair of IRC essentials, namely, a "window list" and a "nicknames list." But what even existing users may not know is that ERC already has both; they just don't quite work the way folks coming from other clients might expect. This patch aims to address that as if it were a problem. What's being proposed here is the addition of two new modules built entirely on functionality already offered by their host libraries, erc-status-sidebar.el and erc-speedbar.el. What's different is these additions flirt with something somewhat verboten in ERC, and that's changing existing defaults for non-security reasons (in this case, chiefly for unifying UX [1]). Beyond that, these changes also hard-wire potentially offensive choices into some of these defaults while trying in earnest to ensure old behavior remains accessible. For example, one module assumes no one with a non-nil `erc-header-line-format' has any use for modes and topics in a side window. Other baked in preferences include the nixing of all throwback icons [2] and the showing of disconnected buffers in a muted face. The list goes on but is open for discussion, as always. Another consideration here is of course naming [3]. I've gone ahead and dubbed the speedbar module 'nickbar' as a bit of an homage to its roots. `nicklist' wasn't available because a popular module of that name was once part of ERC, and people still use it today. For status-sidebar, I went with `bufbar', in part for consistency but also because the would-be canonical "status-sidebar" is already taken by the side window's buffer for its major mode. We might also consider going with the slightly pedestrian `buflist', which is already used by at least one other IRC client for referring to this feature. Lastly, I'd like to stress that these modules (thankfully) won't be loaded by default, which means you'll need to add `bufbar' and `nickbar' to `erc-modules' when trying them out. Note that this patch set currently depends on bug#63569 [3], whose changes need applying beforehand. Thanks! [1] My justifications for taking such liberties are at best anecdotal, based mostly on personal impressions of prevailing usage patterns and the perceived motivations behind them. A few examples: a. The relative newness of erc-status-sidebar.el, its lack of an associated module, and its absence from ERC's Custom menu all point to its defaults being somewhat more free for the changing. The speedbar integration likewise lacks a module, and its graphical-only nature means its set of users currently excludes anyone using ERC from a terminal. (Less expected fallout from the proposed churn, IOW.) b. Both libraries provide an always-open side window (or, in speedbar's case, frame), which imposes a specific layout on the user, something that's relatively rare in Emacs outside of IDE-style modes. Compare this to something like ibuffer for listing buffers or a hypothetical /NAMES buffer, which, if based on `tabulated-list-mode', would make for a more familiar means of reviewing channel members. The point here is that devoted users likely aren't messing with erc-status-sidebar or erc-speedbar in droves, preferring more Emacsy alternatives instead. c. Newcomers can't be bothered with an overly involved setup if it requires carefully exploring options before trying. But they're perfectly willing to copy/paste gobs of configuration or even mindlessly follow a minutes long Customize itinerary, so long as the promise of emerging with something resembling their present idea of what makes an IRC client remains within reach. By introducing these modules "preconfigured," I'm positing that these preconceived notions typically include a reactive window list and/or nick list. That said, my hope is that these users will eventually gravitate toward the more Emacs-native way of doing things, at which point these modules will have served their primary purpose (of acting as bait). [2] My reason for 86'ing the icons outright in the speedbar's new "window mode" is consistency. I figure anyone who wants the vanilla experience wants it in full and thus also wants a separate frame. That said, I suppose we could add a knob for tweaking this (or any of the other hard-coded choices mentioned), but IMO doing that unprovoked just contributes to "options sprawl." [3] FWIW, all module names in contention flout our supposed policy of preferring those that align with host libraries and the features they `provide'. In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.37, cairo version 1.17.6) of 2023-05-13 built on localhost Repository revision: 867b104010760c4b7cd700078884cc774a01860a Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12014000 System Description: Fedora Linux 37 (Workstation Edition) Configured using: 'configure --enable-check-lisp-object-type --enable-checking=yes,glyphs 'CFLAGS=-O0 -g3' PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils erc auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map format-spec cl-loaddefs cl-lib erc-backend erc-networks byte-opt gv bytecomp byte-compile erc-common erc-compat erc-loaddefs rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 64236 9476) (symbols 48 8573 0) (strings 32 23246 1709) (string-bytes 1 674076) (vectors 16 15015) (vector-slots 8 207266 8159) (floats 8 24 33) (intervals 56 229 0) (buffers 976 10)) --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-5.6-Fix-buffer-mismatch-bug-in-erc-scroll-to-bottom.patch From 4a1bd9e173d91164d5abe6f2e349a447eaf019d7 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Wed, 17 May 2023 19:48:02 -0700 Subject: [PATCH 1/5] [5.6] Fix buffer-mismatch bug in erc-scroll-to-bottom * lisp/erc/erc-goodies.el (erc-scroll-to-bottom): Only `recenter' when the selected window's buffer is current. Previously, the module `scrolltobottom' signaled an "Error in `post-command-hook'" when a user clicked a channel indicator in the mode line from a window showing another ERC buffer. --- lisp/erc/erc-goodies.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el index 01eae4b63c5..87c95778523 100644 --- a/lisp/erc/erc-goodies.el +++ b/lisp/erc/erc-goodies.el @@ -92,6 +92,7 @@ erc-scroll-to-bottom (save-restriction (widen) (when (and erc-insert-marker + (eq (current-buffer) (window-buffer)) ;; we're editing a line. Scroll. (> (point) erc-insert-marker)) (save-excursion -- 2.40.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-5.6-Allow-ERC-s-module-toggles-access-to-the-prefix-.patch From 5ae05b1ad34ce1baea149c7af1e9e9282f101725 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Mon, 15 May 2023 00:16:00 -0700 Subject: [PATCH 2/5] [5.6] Allow ERC's module toggles access to the prefix arg * lisp/erc/erc-common.el (erc--module-toggle-prefix-arg): Add internal variable for preserving the `arg' passed to a module's minor-mode toggle, which was previously discarded. Doing this lets modules that are more interactive in nature overload their mode toggles with alternate behaviors. (define-erc-module): Bind `erc--module-toggle-prefix-arg' to the `arg' parameter, which is normally defined inside a `define-minor-mode' body form. * test/lisp/erc/erc-tests.el (define-erc-module--global, define-erc-module--local): Expect activation body to be wrapped by a let form binding `erc--module-toggle-prefix-arg'. --- lisp/erc/erc-common.el | 14 +++++++++++--- test/lisp/erc/erc-tests.el | 14 ++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lisp/erc/erc-common.el b/lisp/erc/erc-common.el index f152a1a32d9..dd39b30c4db 100644 --- a/lisp/erc/erc-common.el +++ b/lisp/erc/erc-common.el @@ -289,6 +289,15 @@ erc--find-feature (intern (file-name-base file)))) (v v))) +(defvar erc--module-toggle-prefix-arg nil + "The interpreted prefix arg of the minor-mode toggle. +Non-nil inside an ERC module's activation (or deactivation) +command, such as `erc-spelling-enable', when it's been called +indirectly via the module's minor-mode toggle, i.e., +`erc-spelling-mode'. Nil otherwise. Its value is either the +symbol `toggle' or an integer produced by `prefix-numeric-value'. +See Info node `(elisp) Defining Minor Modes' for more.") + (defmacro define-erc-module (name alias doc enable-body disable-body &optional local-p) "Define a new minor mode using ERC conventions. @@ -337,9 +346,8 @@ define-erc-module :group (erc--find-group ',name ,(and alias (list 'quote alias))) ,@(unless local-p `(:require ',(erc--find-feature name alias))) ,@(unless local-p `(:type ,(erc--prepare-custom-module-type name))) - (if ,mode - (,enable) - (,disable))) + (let ((erc--module-toggle-prefix-arg arg)) + (if ,mode (,enable) (,disable)))) ,(erc--assemble-toggle local-p name enable mode t enable-body) ,(erc--assemble-toggle local-p name disable mode nil disable-body) ,@(and-let* ((alias) diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index 991bfa3b082..de472527bde 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -2175,9 +2175,10 @@ define-erc-module--global :group (erc--find-group 'mname 'malias) :require 'nil :type "mname" - (if erc-mname-mode - (erc-mname-enable) - (erc-mname-disable))) + (let ((erc--module-toggle-prefix-arg arg)) + (if erc-mname-mode + (erc-mname-enable) + (erc-mname-disable)))) (defun erc-mname-enable () "Enable ERC mname mode." @@ -2230,9 +2231,10 @@ define-erc-module--local Some docstring." :global nil :group (erc--find-group 'mname nil) - (if erc-mname-mode - (erc-mname-enable) - (erc-mname-disable))) + (let ((erc--module-toggle-prefix-arg arg)) + (if erc-mname-mode + (erc-mname-enable) + (erc-mname-disable)))) (defun erc-mname-enable (&optional ,arg-en) "Enable ERC mname mode. -- 2.40.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0003-5.6-Add-preset-styles-to-erc-status-sidebar.patch From c4746e4bb3fde7670bd655ed7f17ec90435018ac Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Thu, 4 May 2023 00:01:11 -0700 Subject: [PATCH 3/5] [5.6] Add preset styles to erc-status-sidebar * lisp/erc/erc-networks.el (erc-networks--rename-server-buffer): Store `erc-networks--id' in process object's plist. * lisp/erc/erc-status-sidebar.el (erc-status-sidebar): Change parent from `convenience' to `erc'. (erc-status-sidebar-channel-format): Mention in doc string that it depends on new option `erc-status-sidebar-style'. (erc-status-sidebar-highlight-active-buffer): New option to control whether the current window's target is highlighted in the status bar. (erc-status-sidebar-style): New option to determine whether servers and queries also appear in the sidebar. (erc-status-sidebar-click-display-action, erc-status-sidebar-singular): New options. (erc-status-sidebar-get-window): Consider `erc-status-sidebar-singular'. (erc-status-sidebar-open): Fix toggle functionality that somehow fell through the cracks after the adoption of the package into ERC proper. (erc-buflist-mode, erc-buflist-enable, erc-buflist-disable): New module named `buflist' instead of `sidebar', which is more easily confusable with `speedbar'. The preferred name, `status-sidebar' was unavailable because its minor-mode would have been `erc-status-sidebar-mode', which is already taken by the major mode used for status-bar buffers themselves. (erc-status-sidebar-toggle): Ignore `erc-status-sidebar-singular'. (erc-status-sidebar--trimpat, erc-status-sidebar--prechan): Add helper vars for new sorting function, allowing it to honor the existing interface, which only expects one argument. (erc-status-sidebar-prefer-target-as-name): New function for determining buffer name, preferring targets for target buffers. (erc-status-sidebar-get-channame): Use internal API to help determine name of buffer in sidebar. (erc-status-sidebar-prefer-target-as-name, erc-status-sidebar--show-disconnected, erc-status-sidebar-all-target-buffers, erc-status-sidebar-default-allsort): Add new naming and sorting functions and associated helper functions and variables. (erc-status-sidebar--active-marker, erc-status-sidebar--set-active-line): New variable and function for highlighting the active target in the status bar. (erc-status-sidebar-default-insert, erc-status-sidebar-pad-hierarchy): New functions for visiting various stages of buffer modification when rendering sidebar. (erc-status-sidebar-click): Appeal to option `erc-status-sidebar-display-action' for `pop-to-buffer' action. (erc-status-sidebar-scroll-up, erc-status-sidebar-scroll-down, erc-status-sidebar-recenter): Add commands to scroll and recenter sidebar from a target buffer's window. (erc-status-sidebar-refresh): Consider presets and new options when rendering sidebar. Disable `erc-buflist-mode' when active. (erc-status-sidebar-set-window-preserve-size): Ignore `erc-status-sidebar-singular'. (erc-status-sidebar-mode): Make non-interactive to avoid confusion when folks run "M-x erc-status-sidebar-mode" expecting a module toggle. * test/lisp/erc/erc-scenarios-status-sidebar.el: New file. * test/lisp/erc/resources/base/gapless-connect/foonet.eld: Fix wrong manifest for channel and extend PASS timeout. --- lisp/erc/erc-networks.el | 1 + lisp/erc/erc-status-sidebar.el | 328 ++++++++++++++++-- test/lisp/erc/erc-scenarios-status-sidebar.el | 93 +++++ .../resources/base/gapless-connect/foonet.eld | 8 +- 4 files changed, 400 insertions(+), 30 deletions(-) create mode 100644 test/lisp/erc/erc-scenarios-status-sidebar.el diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el index dd481032e7e..60d76d059da 100644 --- a/lisp/erc/erc-networks.el +++ b/lisp/erc/erc-networks.el @@ -1459,6 +1459,7 @@ erc-networks--rename-server-buffer ;; When this ends up being the current buffer, either we have ;; a "given" ID or the buffer was reused on reconnecting. (existing (get-buffer name))) + (process-put new-proc 'erc-networks--id erc-networks--id) (cond ((or (not existing) (erc-networks--id-given erc-networks--id) (eq existing (current-buffer))) diff --git a/lisp/erc/erc-status-sidebar.el b/lisp/erc/erc-status-sidebar.el index f11faa3db10..c06ba53f3ae 100644 --- a/lisp/erc/erc-status-sidebar.el +++ b/lisp/erc/erc-status-sidebar.el @@ -45,6 +45,13 @@ ;; Use M-x erc-status-sidebar-kill RET to kill the sidebar buffer and ;; close the sidebar on all frames. +;; In addition to the commands above, you can also try the all-in-one, +;; "DWIM" command, `erc-bufbar-mode'. See its doc string for usage. + +;; If you want the status sidebar enabled whenever you use ERC, add +;; `bufbar' to `erc-modules'. Note that this library also has a major +;; mode, `erc-status-sidebar-mode', which is for internal use. + ;;; Code: (require 'erc) @@ -53,8 +60,15 @@ (require 'seq) (defgroup erc-status-sidebar nil - "A sidebar for ERC channel status." - :group 'convenience) + "A responsive side window listing all connected ERC buffers. +More commonly known as a window list or \"buflist\", this side +panel displays clickable buffer names for switching to with the +mouse. By default, ERC highlights the name corresponding to the +selected window's buffer, if any. Here, \"connected buffer\" +means one belonging to a session context for a server that ERC is +currently communicating with. For information on how the window +itself works, see Info node `(elisp) Side Windows'." + :group 'erc) (defcustom erc-status-sidebar-buffer-name "*ERC Status*" "Name of the sidebar buffer." @@ -80,9 +94,78 @@ erc-status-sidebar-channel-sort (defcustom erc-status-sidebar-channel-format 'erc-status-sidebar-default-chan-format - "Function used to format channel names for display in the sidebar." + "Function used to format channel names for display in the sidebar. +Only consulted for certain values of `erc-status-sidebar-style'." :type 'function) +(defcustom erc-status-sidebar-highlight-active-buffer t + "Whether to highlight the selected window's buffer in the sidebar. +ERC uses the same instance across all frames. May not be +compatible with all values of `erc-status-sidebar-style'." + :package-version '(ERC . "5.6") ; FIXME sync on release + :type 'boolean) + +(defcustom erc-status-sidebar-style 'all-queries-first + "Preset style for rendering the sidebar. + +When set to `channels-only', ERC limits the items in the +status bar to uniquified channels. It uses the options +and functions + + `erc-channel-list', + `erc-status-sidebar-channel-sort', + `erc-status-sidebar-get-channame', + `erc-status-sidebar-channel-format' + `erc-status-sidebar-default-insert' + +for selecting, formatting, naming, and inserting entries. When +set to one of the various \\=`all-*' values, such as `all-mixed', +ERC shows channels and queries under their respective server +buffers, using the functions + + `erc-status-sidebar-all-target-buffers', + `erc-status-sidebar-default-allsort', + `erc-status-sidebar-prefer-target-as-name', + `erc-status-sidebar-default-chan-format', + `erc-status-sidebar-pad-hierarchy' + +for the above-mentioned purposes. ERC also accepts a list of +functions to preform these roles a la carte. See doc strings for +a description of their expected arguments and return values." + :package-version '(ERC . "5.6") ; FIXME sync on release + :type '(choice (const channels-only) + (const all-mixed) + (const all-queries-first) + (const all-channels-first) + (list (function :tag "Buffer lister") + (function :tag "Buffer sorter") + (function :tag "Name extractor") + (function :tag "Name formatter") + (function :tag "Name inserter")))) + +(defcustom erc-status-sidebar-click-display-action t + "How to display a buffer when clicked. +Values can be anything recognized by `display-buffer' for its +ACTION parameter." + :package-version '(ERC . "5.6") ; FIXME sync on release + :type '(choice (const :tag "Always use/create other window" t) + (const :tag "Let `display-buffer' decide" nil) + (const :tag "Same window" (display-buffer-same-window + (inhibit-same-window . nil))) + (cons :tag "Action" + (choice function (repeat function)) + (alist :tag "Action arguments" + :key-type symbol + :value-type (sexp :tag "Value"))))) + +(defcustom erc-status-sidebar-singular t + "Whether to show the sidebar on all frames or just one (default)." + :package-version '(ERC . "5.6") ; FIXME sync on release + :type 'boolean) + +(defvar hl-line-mode) +(declare-function hl-line-highlight "hl-line" nil) + (defun erc-status-sidebar-display-window () "Display the status buffer in a side window. Return the new window." (display-buffer @@ -94,7 +177,8 @@ erc-status-sidebar-get-window "Return the created/existing window displaying the status buffer. If NO-CREATION is non-nil, the window is not created." - (let ((sidebar-window (get-buffer-window erc-status-sidebar-buffer-name))) + (let ((sidebar-window (get-buffer-window erc-status-sidebar-buffer-name + erc-status-sidebar-singular))) (unless (or sidebar-window no-creation) (with-current-buffer (erc-status-sidebar-get-buffer) (setq-local vertical-scroll-bar nil)) @@ -144,22 +228,50 @@ erc-status-sidebar-open "Open or create a sidebar." (interactive) (save-excursion - (let ((sidebar-exists (erc-status-sidebar-buffer-exists-p)) - (sidebar-buffer (erc-status-sidebar-get-buffer)) - ;; (sidebar-window (erc-status-sidebar-get-window)) - ) - (unless sidebar-exists - (with-current-buffer sidebar-buffer - (erc-status-sidebar-mode) - (erc-status-sidebar-refresh)))))) + (if (erc-status-sidebar-buffer-exists-p) + (erc-status-sidebar-get-window) + (with-current-buffer (erc-status-sidebar-get-buffer) + (erc-status-sidebar-mode) + (erc-status-sidebar-refresh))))) + +;;;###autoload(autoload 'erc-bufbar-mode "erc-status-sidebar" nil t) +(define-erc-module bufbar nil + "Show `erc-track'-like activity in a side window. +When enabling, show the sidebar immediately if called from a +connected ERC buffer. Otherwise, arrange for doing so on connect +or whenever next displaying a new ERC buffer. When disabling, +hide the status window if it's showing. With a negative prefix +arg, also shutdown the session." + ((unless erc-track-mode + (unless (memq 'track erc-modules) + (erc--warn-once-before-connect 'erc-bufbar-mode + "Module `bufbar' needs global module `track'. Enabling now." + " This will affect \C-]all\C-] ERC sessions." + " Add `track' to `erc-modules' to silence this message.")) + (erc-track-mode +1)) + (add-hook 'erc--setup-buffer-hook #'erc-status-sidebar-open) + (unless erc--updating-modules-p + (if (erc-with-server-buffer erc-server-connected) + (erc-status-sidebar-open) + (setq erc-bufbar-mode nil) + (user-error "`%s' not called from a connected ERC buffer." + 'erc-bufbar-mode)))) + ((remove-hook 'erc--setup-buffer-hook #'erc-status-sidebar-open) + (erc-status-sidebar-close erc-status-sidebar-singular) + (when-let* ((arg erc--module-toggle-prefix-arg) + ((numberp arg)) + ((< arg 0))) + (erc-status-sidebar-kill)))) ;;;###autoload (defun erc-status-sidebar-toggle () - "Toggle the sidebar open/closed on the current frame." + "Toggle the sidebar open/closed on the current frame. +Do this regardless of `erc-status-sidebar-singular'." (interactive) (if (get-buffer-window erc-status-sidebar-buffer-name nil) (erc-status-sidebar-close) - (erc-status-sidebar-open))) + (let (erc-status-sidebar-singular) + (erc-status-sidebar-open)))) (defun erc-status-sidebar-get-channame (buffer) "Return name of BUFFER with all leading \"#\" characters removed." @@ -174,6 +286,98 @@ erc-status-sidebar-default-chansort (string< (erc-status-sidebar-get-channame x) (erc-status-sidebar-get-channame y))))) +(defvar erc-status-sidebar--trimpat nil) +(defvar erc-status-sidebar--prechan nil) + +(defun erc-status-sidebar-prefer-target-as-name (buffer) + "Return some name to represent buffer in the sidebar." + (if-let ((target (buffer-local-value 'erc--target buffer))) + (cond ((and erc-status-sidebar--trimpat (erc--target-channel-p target)) + (string-trim-left (erc--target-string target) + erc-status-sidebar--trimpat)) + ((and erc-status-sidebar--prechan (erc--target-channel-p target)) + (concat erc-status-sidebar--prechan + (erc--target-string target))) + (t (erc--target-string target))) + (buffer-name buffer))) + +;; This could be converted into an option if people want. +(defvar erc-status-sidebar--show-disconnected t) + +(defun erc-status-sidebar-all-target-buffers (process) + (erc-buffer-filter (lambda () + (and erc--target + (or erc-status-sidebar--show-disconnected + (erc-server-process-alive)))) + process)) + +;; FIXME profile this. Rebuilding the graph every time track updates +;; seems wasteful for occasions where server messages are processed +;; unthrottled, such as during history playback. If it's a problem, +;; we should look into rewriting this using `ewoc' or some other +;; solution that maintains a persistent model. +(defun erc-status-sidebar-default-allsort (target-buffers) + "Return a list of servers interspersed with their targets." + (mapcan (pcase-lambda (`(,proc . ,chans)) + (cons (process-buffer proc) + (let ((erc-status-sidebar--trimpat + (and (eq erc-status-sidebar-style 'all-mixed) + (with-current-buffer (process-buffer proc) + (when-let ((ch-pfxs (erc--get-isupport-entry + 'CHANTYPES 'single))) + (regexp-quote ch-pfxs))))) + (erc-status-sidebar--prechan + (and (eq erc-status-sidebar-style + 'all-queries-first) + "\C-?"))) + (sort chans + (lambda (x y) + (string< + (erc-status-sidebar-prefer-target-as-name x) + (erc-status-sidebar-prefer-target-as-name y))))))) + (sort (seq-group-by (lambda (b) + (buffer-local-value 'erc-server-process b)) + target-buffers) + (lambda (a b) + (string< (buffer-name (process-buffer (car a))) + (buffer-name (process-buffer (car b)))))))) + +(defvar-local erc-status-sidebar--active-marker nil + "Marker indicating currently active buffer.") + +(defun erc-status-sidebar--set-active-line (erc-buffer) + (when (and erc-status-sidebar-highlight-active-buffer + (eq (window-buffer (and (minibuffer-window-active-p + (selected-window)) + (minibuffer-selected-window))) + erc-buffer)) + (set-marker erc-status-sidebar--active-marker (point)))) + +(defun erc-status-sidebar-default-insert (channame chanbuf _chanlist) + "Insert CHANNAME followed by a newline. +Maybe arrange to highlight line if CHANBUF is showing in the +focused window." + (erc-status-sidebar--set-active-line chanbuf) + (insert channame "\n")) + +(defun erc-status-sidebar-pad-hierarchy (bufname buffer buflist) + "Prefix BUFNAME to emphasize BUFFER's role in BUFLIST." + (if (and (buffer-live-p buffer) (buffer-local-value 'erc--target buffer)) + (insert " ") + (unless (eq buffer (car buflist)) + (insert "\n"))) ; ^L + (when bufname + (erc-status-sidebar--set-active-line buffer)) + (insert (or bufname + (and-let* (((not (buffer-live-p buffer))) + (next (cadr (member buffer buflist))) + ((buffer-live-p next)) + (proc (buffer-local-value 'erc-server-process next)) + (id (process-get proc 'erc-networks--id))) + (symbol-name (erc-networks--id-symbol id))) + "???") + "\n")) + (defun erc-status-sidebar-default-chan-format (channame &optional num-messages erc-face) "Format CHANNAME for display in the sidebar. @@ -193,43 +397,111 @@ erc-status-sidebar-default-chan-format (defun erc-status-sidebar-refresh () "Update the content of the sidebar." (interactive) - (let ((chanlist (apply erc-status-sidebar-channel-sort - (erc-channel-list nil) nil))) + (pcase-let* ((`(,list-fn ,sort-fn ,name-fn ,fmt-fn ,insert-fn) + (pcase erc-status-sidebar-style + ('channels-only (list #'erc-channel-list + erc-status-sidebar-channel-sort + #'erc-status-sidebar-get-channame + erc-status-sidebar-channel-format + #'erc-status-sidebar-default-insert)) + ((or 'all-mixed 'all-queries-first 'all-channels-first) + '(erc-status-sidebar-all-target-buffers + erc-status-sidebar-default-allsort + erc-status-sidebar-prefer-target-as-name + erc-status-sidebar-default-chan-format + erc-status-sidebar-pad-hierarchy)) + (v v))) + (chanlist (apply sort-fn (funcall list-fn nil) nil)) + (window nil) + (winstart nil)) (with-current-buffer (erc-status-sidebar-get-buffer) + (setq window (get-buffer-window nil erc-status-sidebar-singular) + winstart (and window (window-start window))) (erc-status-sidebar-writable (delete-region (point-min) (point-max)) (goto-char (point-min)) + (if erc-status-sidebar--active-marker + (set-marker erc-status-sidebar--active-marker nil) + (setq erc-status-sidebar--active-marker (make-marker))) (dolist (chanbuf chanlist) (let* ((tup (seq-find (lambda (tup) (eq (car tup) chanbuf)) erc-modified-channels-alist)) (count (if tup (cadr tup))) (face (if tup (cddr tup))) - (channame (apply erc-status-sidebar-channel-format - (buffer-name chanbuf) count face nil)) + (face (if (or (not (buffer-live-p chanbuf)) + (not (erc-server-process-alive chanbuf))) + `(shadow ,face) + face)) + (channame (apply fmt-fn + (copy-sequence (funcall name-fn chanbuf)) + count face nil)) (cnlen (length channame))) (put-text-property 0 cnlen 'erc-buf chanbuf channame) (put-text-property 0 cnlen 'mouse-face 'highlight channame) (put-text-property 0 cnlen 'help-echo "mouse-1: switch to buffer in other window" channame) - (insert channame "\n"))))))) + (funcall insert-fn channame chanbuf chanlist))) + (when winstart + (set-window-point window winstart) + (with-selected-window window (recenter 0))) + (when (and erc-status-sidebar-highlight-active-buffer + (marker-buffer erc-status-sidebar--active-marker)) + (goto-char erc-status-sidebar--active-marker) + (require 'hl-line) + (unless hl-line-mode (hl-line-mode +1)) + (hl-line-highlight)))))) (defun erc-status-sidebar-kill () "Close the ERC status sidebar and its buffer." (interactive) + (when (and erc-bufbar-mode (not erc--module-toggle-prefix-arg)) + (erc-bufbar-mode -1)) (ignore-errors (kill-buffer erc-status-sidebar-buffer-name))) (defun erc-status-sidebar-click (event) "Handle click EVENT in `erc-status-sidebar-mode-map'." (interactive "e") (save-excursion - (let ((window (posn-window (event-end event))) + (let ((window (posn-window (event-start event))) (pos (posn-point (event-end event)))) - (set-buffer (window-buffer window)) - (let ((buf (get-text-property pos 'erc-buf))) - (when buf - (select-window window) - (switch-to-buffer-other-window buf)))))) + ;; Current buffer is "ERC Status" and its window is selected + (cl-assert (eq major-mode 'erc-status-sidebar-mode)) + (cl-assert (eq (selected-window) window)) + (cl-assert (eq (window-buffer window) (current-buffer))) + (when-let ((buf (get-text-property pos 'erc-buf))) + ;; Option operates relative to last selected window + (select-window (get-mru-window nil nil 'not-selected)) + (pop-to-buffer buf erc-status-sidebar-click-display-action))))) + +(defun erc-status-sidebar-scroll-up (lines) + "Scroll sidebar buffer's content LINES linse upward. +If LINES is nil, scroll up a full screen's worth." + (interactive "P") + (let ((other-window-scroll-buffer (erc-status-sidebar-get-buffer))) + (scroll-other-window lines))) + +(defun erc-status-sidebar-scroll-down (lines) + "Scroll sidebar buffer's content LINES lines downward. +If LINES is nil, scroll down a full screen's worth." + (interactive "P") + (let ((other-window-scroll-buffer (erc-status-sidebar-get-buffer))) + (scroll-other-window-down lines))) + +(defun erc-status-sidebar-recenter (arg) + "Recenter the status sidebar. +Expect `erc-status-sidebar-highlight-active-buffer' to be non-nil +and to be invoked in a buffer matching the line currently +highlighted." + (interactive "P") + (let* ((buf (erc-status-sidebar-get-buffer)) + (win (get-buffer-window buf))) + (with-current-buffer buf + (when (and erc-status-sidebar--active-marker + (marker-position erc-status-sidebar--active-marker)) + (with-selected-window win + (goto-char erc-status-sidebar--active-marker) + (recenter arg t)))))) (defvar erc-status-sidebar-mode-map (let ((map (make-sparse-keymap))) @@ -268,13 +540,17 @@ erc-status-sidebar-set-window-preserve-size Note that preserve status needs to be reset when the window is manually resized, so `erc-status-sidebar-mode' adds this function to the `window-configuration-change-hook'." - (when (and (eq (selected-window) (erc-status-sidebar-get-window)) + (when (and (eq (selected-window) (let (erc-status-sidebar-singular) + (erc-status-sidebar-get-window))) (fboundp 'window-preserve-size)) (unless (eq (window-total-width) (window-min-size nil t)) (apply #'window-preserve-size (selected-window) t t nil)))) (define-derived-mode erc-status-sidebar-mode special-mode "ERC Sidebar" "Major mode for ERC status sidebar." + ;; Users invoking M-x erc-status-sidebar-mode most likely expect to + ;; summon the module's minor-mode, `erc-bufbar-mode'. + :interactive nil ;; Don't scroll the buffer horizontally, if a channel name is ;; obscured then the window can be resized. (setq-local auto-hscroll-mode nil) diff --git a/test/lisp/erc/erc-scenarios-status-sidebar.el b/test/lisp/erc/erc-scenarios-status-sidebar.el new file mode 100644 index 00000000000..aec61333e0b --- /dev/null +++ b/test/lisp/erc/erc-scenarios-status-sidebar.el @@ -0,0 +1,93 @@ +;;; erc-scenarios-status-sidebar.el --- sidebar/speedbar -*- lexical-binding: t -*- + +;; Copyright (C) 2022-2023 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Code: + +(require 'ert-x) +(eval-and-compile + (let ((load-path (cons (ert-resource-directory) load-path))) + (require 'erc-scenarios-common))) + +(require 'erc-status-sidebar) + + +(ert-deftest erc-scenarios-status-sidebar--bufbar () + :tags '(:expensive-test) + (erc-scenarios-common-with-cleanup + ((erc-scenarios-common-dialog "base/gapless-connect") + (erc-server-flood-penalty 0.1) + (erc-server-flood-penalty erc-server-flood-penalty) + (erc-modules `(bufbar ,@erc-modules)) + (dumb-server (erc-d-run "localhost" t 'foonet 'barnet)) + (port (process-contact dumb-server :service)) + (expect (erc-d-t-make-expecter))) + + (ert-info ("Connect to two different endpoints") + (with-current-buffer (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester") + (funcall expect 10 "MOTD File is missing")) + (with-current-buffer (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester") + (funcall expect 10 "marked as being away"))) + + + (with-current-buffer (erc-d-t-wait-for 20 (get-buffer "#bar")) + (funcall expect 10 "was created on") + (funcall expect 2 "his second fit")) + + (with-current-buffer (erc-d-t-wait-for 20 (get-buffer "#foo")) + (funcall expect 10 "was created on") + (funcall expect 2 "no use of him") + (ert-info ("Activity marker is in the right spot") + (let ((obuf (window-buffer))) ; *scratch* + (set-window-buffer (selected-window) "#foo") + (erc-d-t-wait-for 5 + (when noninteractive + (erc-status-sidebar-refresh)) + (with-current-buffer "*ERC Status*" + (and (marker-position erc-status-sidebar--active-marker) + (goto-char erc-status-sidebar--active-marker) + ;; The " [N]" suffix disappears because it's selected + (search-forward "#foo" (pos-eol) t)))) + (set-window-buffer (selected-window) obuf)))) + + (with-current-buffer (erc-d-t-wait-for 20 (get-buffer "*ERC Status*")) + (ert-info ("Hierarchy printed correctly") + (funcall expect 10 "barnet [") + (funcall expect 10 "#bar [") + (funcall expect 10 "foonet [") + (funcall expect 10 "#foo"))) + + (with-current-buffer "#foo" + (ert-info ("Core toggle and kill commands work") + ;; Avoid using API, e.g., `erc-status-sidebar-buffer-exists-p', + ;; etc. for testing commands that call those same functions. + (should (get-buffer-window "*ERC Status*")) + (erc-bufbar-mode -1) + (should-not (get-buffer-window "*ERC Status*")) + (erc-status-sidebar-kill) + (should-not (get-buffer "*ERC Status*")))))) + +;;; erc-scenarios-status-sidebar.el ends here diff --git a/test/lisp/erc/resources/base/gapless-connect/foonet.eld b/test/lisp/erc/resources/base/gapless-connect/foonet.eld index 4ac4a3e5968..10b742fdb34 100644 --- a/test/lisp/erc/resources/base/gapless-connect/foonet.eld +++ b/test/lisp/erc/resources/base/gapless-connect/foonet.eld @@ -1,7 +1,7 @@ ;; -*- mode: lisp-data; -*- -((pass 1 "PASS :foonet:changeme")) -((nick 1 "NICK tester")) -((user 1 "USER user 0 * :tester") +((pass 10 "PASS :foonet:changeme")) +((nick 10 "NICK tester")) +((user 10 "USER user 0 * :tester") (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") (0 ":irc.foonet.org 003 tester :This server was created Sun, 25 Apr 2021 11:28:28 UTC") @@ -21,7 +21,7 @@ ;; No mode answer (0 ":irc.znc.in 306 tester :You have been marked as being away") (0 ":tester!~u@HIDDEN JOIN #foo") - (0 ":irc.foonet.org 353 tester = #foo :joe @mike tester") + (0 ":irc.foonet.org 353 tester = #foo :alice @bob tester") (0 ":irc.foonet.org 366 tester #foo :End of /NAMES list.") (0 ":***!znc@HIDDEN PRIVMSG #foo :Buffer Playback...") (0 ":alice!~u@HIDDEN PRIVMSG #foo :[07:02:41] bob: To-morrow is the joyful day, Audrey; to-morrow will we be married.") -- 2.40.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0004-5.6-Add-erc-status-sidebar-integration-to-erc-speedb.patch From fd2ec89c40dd52322c8196c3653e06c937176bc7 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Thu, 4 May 2023 00:01:11 -0700 Subject: [PATCH 4/5] [5.6] Add erc-status-sidebar integration to erc-speedbar * lisp/erc/erc-speedbar.el: Require `erc-button' atop file and don't bother loading `dframe', which `speedbar' handles for us. (erc-speedbar-hide-mode-topic): New option determining whether to hide the mode and topic. (erc-speedbar-my-nick-face): New option for determining face to use when displaying user's current nick. (erc-speedbar-browser): Call `erc-install-speedbar-variables' explicitly and remove top-level `with-eval-after-load'. (erc-speedbar-insert-target): Add parenthesized channel count after channel name in server and channel views. (erc-speedbar-expand-channel): Hide mode and topic depending on option `erc-speedbar-hide-mode-topic' and pass buffer to `erc-speedbar-insert-user'. (erc-speedbar--nick-face-function): New internal function-interface variable. (erc-speedbar--highlight-self-and-ops): New function to serve as default value for `erc-speedbar--nick-face-function'. (erc-speedbar--on-click): Dispatch `erc-nick-popup' after trimming status chars. (erc-speedbar-insert-user): Revise doc string. Call `erc-speedbar--nick-face-function' to determine face. Change token for both expansion and on-click text props. Assign `erc-speedbar--on-click' as the mouse handler for nick items. (erc-speedbar-emulated-sidebar-width): New option to control width of nicknames list window. (erc-speedbar): Mention `erc-nickbar-mode' in group doc string. (erc-speedbar--buffer-options): Variable to override options locally in speedbar buffer. (erc-speedbar--hidden-speedbar-frame): Add variable to hold original `speedbar-frame' before spoofing by setting to selected frame containing window showing ERC buffer. (erc-speedbar--dframe-controlled) Add function to overwrite `speedbar-frame-mode' as `dframe-controlled' in speedbar buffer. (erc-speedbar--emulate-sidebar-set-window-preserve-size, erc-speedbar--status-sidebar-mode--unhook): Add function to ensure status sidebar is showing correctly and helper to unregister from hook on teardown. (erc-speedbar--emulate-sidebar): Add function to control sidebar nicknames setup. (erc-speedbar--toggle-nicknames-sidebar): Add toggle function for sidebar or speedbar. (erc-speedbar--ensure): Add helper function to show speedbar if its hidden or create one if none exists. (erc-nickbar-mode, erc-nickbar-enable, erc-nickbar-disable): Add new module. (erc-speedbar-toggle-nicknames-window-lock, erc-speedbar-close-nicknames-window): Add commands to close speedbar window and toggle its cyclability. (erc-speedbar--compose-nicks-face): Add helper for nicks integration. * test/lisp/erc/erc-scenarios-status-sidebar.el (erc-scenarios-status-sidebar--nickbar): New test, unfortunately only runs in terminals. --- lisp/erc/erc-speedbar.el | 284 ++++++++++++++++-- test/lisp/erc/erc-scenarios-status-sidebar.el | 76 +++++ 2 files changed, 342 insertions(+), 18 deletions(-) diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el index a9443e0ea17..21ad4c6f97a 100644 --- a/lisp/erc/erc-speedbar.el +++ b/lisp/erc/erc-speedbar.el @@ -32,20 +32,31 @@ ;; update-channel, update-nick, remove-nick-from-channel, ... ;; * Use indicator-strings for op/voice ;; * Extract/convert face notes field from bbdb if available +;; * Write tests that run in a term-mode subprocess ;; ;;; Code: (require 'erc) (require 'erc-goodies) +(require 'erc-button) (require 'speedbar) -(condition-case nil (require 'dframe) (error nil)) ;;; Customization: (defgroup erc-speedbar nil - "Integration of ERC in the Speedbar." + "Speedbar integration for ERC. +To open an ERC-flavored speedbar in a separate frame, run the +command `erc-speedbar-browser'. To use a window-based proxy +instead, run \\[erc-nickbar-mode] in a connected ERC buffer or +put `nickbar' in `erc-modules' before connecting. See Info +node `(speedbar) Top' for more about the underlying integration." :group 'erc) +(defcustom erc-speedbar-nicknames-window-width 18 + "Default width of the nicknames sidebar (in columns)." + :package-version '(ERC . "5.7") + :type 'integer) + (defcustom erc-speedbar-sort-users-type 'activity "How channel nicknames are sorted. @@ -56,6 +67,23 @@ erc-speedbar-sort-users-type (const :tag "Sort users alphabetically" alphabetical) (const :tag "Do not sort users" nil))) +(defcustom erc-speedbar-hide-mode-topic 'headerline + "Hide mode and topic lines." + :package-version '(ERC . "5.7") ; FIXME sync on release + :type '(choice (const :tag "Always show" nil) + (const :tag "Always hide" t) + (const :tag "Omit when headerline visible" headerline))) + +(defcustom erc-speedbar-my-nick-face t + "A face to use for your nickname. +When the value is t, ERC uses `erc-current-nick-face' if +`erc-match' has been loaded and `erc-my-nick-face' otherwise. +When using the `nicks' module, you can see your nick as it +appears to others by coordinating with the option +`erc-nicks-skip-faces'." + :package-version '(ERC . "5.7") + :type '(choice face (const :tag "Match or own input face" t))) + (defvar erc-speedbar-key-map nil "Keymap used when in erc display mode.") @@ -88,10 +116,6 @@ erc-speedbar-menu-items (looking-at "[0-9]+: *.-. "))]) "Additional menu-items to add to speedbar frame.") -;; Make sure our special speedbar major mode is loaded -(with-eval-after-load 'speedbar - (erc-install-speedbar-variables)) - ;;; ERC hierarchy display method ;;;###autoload (defun erc-speedbar-browser () @@ -99,6 +123,7 @@ erc-speedbar-browser This will add a speedbar major display mode." (interactive) (require 'speedbar) + (erc-install-speedbar-variables) ;; Make sure that speedbar is active (speedbar-frame-mode 1) ;; Now, throw us into Info mode on speedbar. @@ -169,12 +194,18 @@ erc-speedbar-channel-buttons t))))) (defun erc-speedbar-insert-target (buffer depth) - (if (with-current-buffer buffer - (erc-channel-p (erc-default-target))) - (speedbar-make-tag-line - 'bracket ?+ 'erc-speedbar-expand-channel buffer - (buffer-name buffer) 'erc-speedbar-goto-buffer buffer nil - depth) + (if (erc--target-channel-p (buffer-local-value 'erc--target buffer)) + (progn + (speedbar-make-tag-line + 'bracket ?+ 'erc-speedbar-expand-channel buffer + (erc--target-string (buffer-local-value 'erc--target buffer)) + 'erc-speedbar-goto-buffer buffer nil + depth) + (save-excursion + (forward-line -1) + (let ((table (buffer-local-value 'erc-channel-users buffer))) + (speedbar-add-indicator (format "(%d)" (hash-table-count table))) + (rx "(" (+ (any "0-9")) ")")))) ;; Query target (speedbar-make-tag-line nil nil nil nil @@ -220,6 +251,13 @@ erc-speedbar-expand-channel 'angle ?i nil nil (concat "Topic: " topic) nil nil nil (1+ indent))) + (unless (pcase erc-speedbar-hide-mode-topic + ('nil 'show) + ('headerline (null erc-header-line-format))) + (save-excursion + (goto-char (point-max)) + (forward-line (if (string= topic "") -1 -2)) + (put-text-property (pos-bol) (point-max) 'invisible t))) (let ((names (cond ((eq erc-speedbar-sort-users-type 'alphabetical) (erc-sort-channel-users-alphabetically (with-current-buffer channel @@ -233,17 +271,52 @@ erc-speedbar-expand-channel (when names (speedbar-with-writable (dolist (entry names) - (erc-speedbar-insert-user entry ?+ (1+ indent)))))))))) + (erc-speedbar-insert-user entry ?+ (1+ indent) channel))))))))) ((string-search "-" text) (speedbar-change-expand-button-char ?+) (speedbar-delete-subblock indent)) (t (error "Ooops... not sure what to do"))) (speedbar-center-buffer-smartly)) -(defun erc-speedbar-insert-user (entry exp-char indent) +(defvar erc-speedbar--nick-face-function #'erc-speedbar--highlight-self-and-ops + "Function called when finding a face for fontifying nicks. +Called with the proposed nick, the `erc-server-user', and the +`erc-channel-user'. Should return any valid face, possibly +composed or anonymous, or nil.") + +(defun erc-speedbar--highlight-self-and-ops (buffer user cuser) + "Highlight own nick and op'd users in the speedbar." + (with-current-buffer buffer + (if (erc-current-nick-p (erc-server-user-nickname user)) + (pcase erc-speedbar-my-nick-face + ('t (if (featurep 'erc-match) + 'erc-current-nick-face + 'erc-my-nick-face)) + (v v)) + ;; FIXME overload `erc-channel-user-owner-p' and friends to + ;; accept an `erc-channel-user' object and replace this unrolled + ;; stuff with a single call to `erc-get-user-mode-prefix'. + (and cuser (or (erc-channel-user-owner cuser) + (erc-channel-user-admin cuser) + (erc-channel-user-op cuser) + (erc-channel-user-halfop cuser) + (erc-channel-user-voice cuser)) + erc-button-nickname-face)))) + +(defun erc-speedbar--on-click (nick sbtoken _indent) + ;; 0: finger, 1: name, 2: info, 3: buffer-name + (with-current-buffer (nth 3 sbtoken) + (erc-nick-popup (string-trim-left nick "[~&@%+]+")))) + +(defun erc-speedbar-insert-user (entry exp-char indent &optional buffer) "Insert one user based on the channel member list ENTRY. -EXP-CHAR is the expansion character to use. -INDENT is the current indentation level." +Expect EXP-CHAR to be the expansion character to use, INDENT the +current indentation level, and BUFFER the associated channel or +query buffer. Set the `speedbar-function' text property to +`erc-speedbar--on-click', which is called with the formatted +nick, a so-called \"token\", and the indent level. The token is +a list of four items: the userhost, the GECOS, the current +`erc-server-user' info slot, and the associated buffer." (let* ((user (car entry)) (cuser (cdr entry)) (nick (erc-server-user-nickname user)) @@ -255,11 +328,12 @@ erc-speedbar-insert-user (op (and cuser (erc-channel-user-op cuser))) (nick-str (concat (if op "@" "") (if voice "+" "") nick)) (finger (concat login (when (or login host) "@") host)) - (sbtoken (list finger name info))) + (sbtoken (list finger name info (buffer-name buffer)))) (if (or login host name info) ; we want to be expandable (speedbar-make-tag-line 'bracket ?+ 'erc-speedbar-expand-user sbtoken - nick-str nil sbtoken nil + nick-str #'erc-speedbar--on-click sbtoken + (funcall erc-speedbar--nick-face-function buffer user cuser) indent) (when (equal exp-char ?-) (forward-line -1) @@ -357,6 +431,180 @@ erc-speedbar-item-info (t (message "%s" txt))))) + +;;;; Status-sidebar integration + +(defvar erc-status-sidebar-buffer-name) +(declare-function erc-status-sidebar-set-window-preserve-size + "erc-status-sidebar" nil) +(declare-function erc-status-sidebar-mode--unhook "erc-status-sidebar" nil) + +(defvar erc-speedbar--buffer-options + '((speedbar-update-flag . t) + (speedbar-use-images . nil) + (speedbar-hide-button-brackets-flag . t))) + +(defvar erc-speedbar--hidden-speedbar-frame nil) + +(defun erc-speedbar--emulate-sidebar-set-window-preserve-size () + (let ((erc-status-sidebar-buffer-name (buffer-name speedbar-buffer)) + (display-buffer-overriding-action + `(display-buffer-in-side-window + . ((side . right) + (window-width . ,erc-speedbar-nicknames-window-width))))) + (erc-status-sidebar-set-window-preserve-size) + (when-let ((window (get-buffer-window speedbar-buffer))) + (set-window-parameter window 'no-other-window nil) + (internal-show-cursor window t)))) + +(defun erc-speedbar--status-sidebar-mode--unhook () + "Remove hooks installed by `erc-status-sidebar-mode'." + (remove-hook 'window-configuration-change-hook + #'erc-speedbar--emulate-sidebar-set-window-preserve-size)) + +(defun erc-speedbar--emulate-sidebar () + (require 'erc-status-sidebar) + (cl-assert speedbar-frame) + (cl-assert (eq speedbar-buffer (current-buffer))) + (cl-assert (eq speedbar-frame (selected-frame))) + (setq erc-speedbar--hidden-speedbar-frame speedbar-frame + dframe-controlled #'erc-speedbar--dframe-controlled) + (add-hook 'window-configuration-change-hook + #'erc-speedbar--emulate-sidebar-set-window-preserve-size nil t) + (add-hook 'kill-buffer-hook + #'erc-speedbar--status-sidebar-mode--unhook nil t) + (with-current-buffer speedbar-buffer + (pcase-dolist (`(,var . ,val) erc-speedbar--buffer-options) + (set (make-local-variable var) val))) + (when (memq 'nicks erc-modules) + (with-current-buffer speedbar-buffer + (add-function :around (local 'erc-speedbar--nick-face-function) + #'erc-speedbar--compose-nicks-face)))) + +(defun erc-speedbar--toggle-nicknames-sidebar (arg) + (let ((force (numberp arg))) + (if speedbar-buffer + (progn + (cl-assert (buffer-live-p speedbar-buffer)) + (if (or (and force (< arg 0)) + (and (not force) (get-buffer-window speedbar-buffer nil))) + (erc-speedbar-close-nicknames-window nil) + (when (or (not force) (>= arg 0)) + (with-selected-frame speedbar-frame + (erc-speedbar--emulate-sidebar-set-window-preserve-size))))) + (when (or (not force) (>= arg 0)) + (let ((speedbar-frame-parameters (backquote-list* + '(visibility . nil) + '(no-other-frame . t) + speedbar-frame-parameters)) + (speedbar-after-create-hook #'erc-speedbar--emulate-sidebar)) + (erc-speedbar-browser) + ;; If we put the remaining parts in the "create hook" along + ;; with everything else, the frame with `window-main-window' + ;; gets raised and steals focus if you've switched away from + ;; Emacs in the meantime. + (make-frame-invisible speedbar-frame) + (select-frame (setq speedbar-frame (previous-frame))) + (erc-speedbar--emulate-sidebar-set-window-preserve-size)))))) + +(defun erc-speedbar--ensure (&optional force) + (when (or (erc-server-buffer) force) + (erc-speedbar--toggle-nicknames-sidebar +1) + (speedbar-enable-update))) + +;;;###autoload(autoload 'erc-nickbar-mode "erc-speedbar" nil t) +(define-erc-module nickbar nil + "Show nicknames in a side window. +When enabling, create a speedbar session if one doesn't exist and +show its buffer in an `erc-status-sidebar' window instead of a +separate frame. When disabling, close the window or, with a +negative prefix arg, destroy the session. + +WARNING: it's suspected that this module may perform unwanted +side effects like raising frames and/or stealing input focus. If +you witness such an occurrence, and can reproduce it, please file +a bug report with \\[erc-bug]." + ((add-hook 'erc--setup-buffer-hook #'erc-speedbar--ensure) + (erc-speedbar--ensure) + (unless (or erc--updating-modules-p + (and-let* ((speedbar-buffer) + (win (get-buffer-window speedbar-buffer 'all-frames)) + ((eq speedbar-frame (window-frame win)))))) + (if speedbar-buffer + (erc-speedbar--ensure 'force) + (cl-assert (not (derived-mode-p 'erc-mode))) + (setq erc-nickbar-mode nil) + (user-error "Cannot initialize `%s' in a non-ERC buffer" + 'erc-nickbar-mode)))) + ((remove-hook 'erc--setup-buffer-hook #'erc-speedbar--ensure) + (speedbar-disable-update) + (erc-speedbar--toggle-nicknames-sidebar -1) + (when-let* ((arg erc--module-toggle-prefix-arg) + ((numberp arg)) + ((< arg 0))) + (erc-speedbar-close-nicknames-window 'kill)))) + +(defun erc-speedbar--dframe-controlled (arg) + (when (and erc-speedbar--hidden-speedbar-frame (numberp arg) (< arg 0)) + (when erc-nickbar-mode + (erc-nickbar-mode -1)) + (setq speedbar-frame erc-speedbar--hidden-speedbar-frame + erc-speedbar--hidden-speedbar-frame nil) + ;; It's unknown whether leaving the frame invisible interferes + ;; with the upstream teardown procedure. + (when (display-graphic-p) + (make-frame-visible speedbar-frame)) + (speedbar-frame-mode arg) + (when speedbar-buffer + (kill-buffer speedbar-buffer) + (setq speedbar-buffer nil)))) + +(defun erc-speedbar-toggle-nicknames-window-lock () + "Toggle whether nicknames window is selectable with \\[other-window]." + (interactive) + (unless erc-nickbar-mode + (user-error "`erc-nickbar-mode' inactive")) + (when-let* ((window (get-buffer-window speedbar-buffer))) + (let ((val (window-parameter window 'no-other-window))) + (set-window-parameter window 'no-other-window (not val)) + (message "nick-window: %s" (if val "selectable" "protected"))))) + +(defun erc-speedbar-close-nicknames-window (kill) + (interactive "P") + (if kill + (with-current-buffer speedbar-buffer + (dframe-close-frame) + (cl-assert (not erc-nickbar-mode)) + (setq erc-speedbar--hidden-speedbar-frame nil)) + (dolist (window (get-buffer-window-list speedbar-buffer nil t)) + (unless (frame-root-window-p window) + (when erc-speedbar--hidden-speedbar-frame + (cl-assert (not (eq (window-frame window) + erc-speedbar--hidden-speedbar-frame)))) + (delete-window window))))) + + +;;;; Nicks integration + +(defvar erc-nicks--phony-face) +(declare-function erc-nicks--highlight "erc-nicks" (nick-object)) + +(defun erc-speedbar--compose-nicks-face (orig buffer user cuser) + (require 'erc-nicks) + (let ((rv (funcall orig buffer user cuser))) + (if-let* ((nobj (make-erc-button--nick + :downcased (erc-downcase (erc-server-user-nickname user)) + :user user + :cuser cuser)) + (erc-nicks--phony-face (or rv t)) + (nobj (with-current-buffer buffer + (erc-nicks--highlight nobj))) + (face (erc-button--nick-erc-button-nickname-face nobj)) + ((not (eq face erc-button-nickname-face)))) + (cons face (ensure-list rv)) + rv))) + + (provide 'erc-speedbar) ;;; erc-speedbar.el ends here ;; diff --git a/test/lisp/erc/erc-scenarios-status-sidebar.el b/test/lisp/erc/erc-scenarios-status-sidebar.el index aec61333e0b..6ac1821ebb7 100644 --- a/test/lisp/erc/erc-scenarios-status-sidebar.el +++ b/test/lisp/erc/erc-scenarios-status-sidebar.el @@ -90,4 +90,80 @@ erc-scenarios-status-sidebar--bufbar (erc-status-sidebar-kill) (should-not (get-buffer "*ERC Status*")))))) +;; No need to pollute the global obarray since we can't currently run +;; this on EMBA (it requires a terminal). Please try running this +;; test interactively with both graphical Emacs and non. +(declare-function erc-nickbar-mode "erc-speedbar" (arg)) +(declare-function erc-speedbar-close-nicknames-window "erc-speedbar" (kill)) +(declare-function speedbar-timer-fn "speedbar" nil) +(defvar erc-nickbar-mode) +(defvar speedbar-buffer) + +(ert-deftest erc-scenarios-status-sidebar--nickbar () + :tags '(:unstable :expensive-test) + (when noninteractive (ert-skip "Interactive only")) + + (erc-scenarios-common-with-cleanup + ((erc-scenarios-common-dialog "base/gapless-connect") + (erc-server-flood-penalty 0.1) + (erc-server-flood-penalty erc-server-flood-penalty) + (erc-modules `(nickbar ,@erc-modules)) + (dumb-server (erc-d-run "localhost" t 'foonet 'barnet)) + (port (process-contact dumb-server :service)) + (expect (erc-d-t-make-expecter))) + + (ert-info ("Connect to two different endpoints") + (with-current-buffer (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "foonet:changeme" + :full-name "tester") + (funcall expect 10 "MOTD File is missing")) + (with-current-buffer (erc :server "127.0.0.1" + :port port + :nick "tester" + :password "barnet:changeme" + :full-name "tester") + (funcall expect 10 "marked as being away"))) + + (erc-d-t-wait-for 20 (get-buffer "#bar")) + (with-current-buffer (pop-to-buffer "#bar") + (funcall expect 10 "was created on") + (funcall expect 2 "his second fit") + (erc-d-t-wait-for 10 (and speedbar-buffer (get-buffer speedbar-buffer))) + (speedbar-timer-fn) + (with-current-buffer speedbar-buffer + (funcall expect 10 "#bar (3)") + (funcall expect 10 '(| "@mike" "joe")) + (funcall expect 10 '(| "@mike" "joe")) + (funcall expect 10 "tester"))) + + (erc-d-t-wait-for 20 (get-buffer "#foo")) + (with-current-buffer (pop-to-buffer "#foo") + (delete-other-windows) + (funcall expect 10 "was created on") + (funcall expect 2 "no use of him") + (speedbar-timer-fn) + (with-current-buffer speedbar-buffer + (funcall expect 10 "#foo (3)") + (funcall expect 10 '(| "alice" "@bob")) + (funcall expect 10 '(| "alice" "@bob")) + (funcall expect 10 "tester"))) + + (with-current-buffer "#foo" + (ert-info ("Core toggle and kill commands work") + ;; Avoid using API, e.g., `erc-status-sidebar-buffer-exists-p', + ;; etc. for testing commands that call those same functions. + (erc-nickbar-mode -1) + (should-not (and speedbar-buffer + (get-buffer-window speedbar-buffer))) + (erc-nickbar-mode +1) + (should (and speedbar-buffer + (get-buffer-window speedbar-buffer))) + (should (get-buffer " SPEEDBAR")) + (erc-speedbar-close-nicknames-window 'kill) + (should-not (get-buffer " SPEEDBAR")) + (should-not erc-nickbar-mode) + (should-not (cdr (frame-list))))))) + ;;; erc-scenarios-status-sidebar.el ends here -- 2.40.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0005-5.6-Add-new-ERC-modules-bufbar-and-nickbar.patch From 93f31ce4e062acd8ea6e87ea8023707b9e4b383b Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@HIDDEN> Date: Thu, 4 May 2023 00:01:11 -0700 Subject: [PATCH 5/5] [5.6] Add new ERC modules bufbar and nickbar * doc/misc/erc.texi: Add `bufbar' and `nickbar' to known modules. * erc/ERC-NEWS: Mention erc-status-sidebar and erc-speedbar improvements. * lisp/erc/erc.el (erc-modules): Add `bufbar' and `nickbar' to selection of offered modules. * test/lisp/erc/erc-tests.el (erc-tests--modules): Add `bufbar' and `nickbar'. --- doc/misc/erc.texi | 9 +++++++++ etc/ERC-NEWS | 16 ++++++++++++++++ lisp/erc/erc.el | 2 ++ test/lisp/erc/erc-tests.el | 4 ++-- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index f7036e57638..7c625c2fd02 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi @@ -418,6 +418,10 @@ Modules @item bbdb Integrate with the Big Brother Database +@cindex modules, bufbar +@item bufbar +List ERC buffers belonging to a live connection in a side window + @cindex modules, button @item button Buttonize URLs, nicknames, and other text @@ -463,6 +467,11 @@ Modules @item nicks Automatically colorize nicks +@cindex modules, nickbar +@item nickbar +List participating nicks for the current target buffer in a side +window + @cindex modules, noncommands @item noncommands Don't display non-IRC commands after evaluation diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index 41af8b88277..6922ae22482 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -72,6 +72,22 @@ widget has been an age-old annoyance for new users. Previously ineffective, this method now actually works, but it also admonishes users to edit the 'erc-modules' widget instead. +** ERC's status-sidebar now has an accompanying module. +Users can now add 'bufbar' to 'erc-modules' to achieve the same effect +as toggling 'erc-status-sidebar-open' manually at the start of an IRC +session. The module has also been outfitted to show channels and +queries under their respective servers by default. To avoid +confusion, the major mode used for the sidebar buffer itself, +'erc-status-sidebar-mode', is no longer available interactively. + +** A new spin on a classic integration in erc-speedbar. +Add 'nickbar' to 'erc-modules' to spawn a dynamically updating side +window listing all the users in any target buffer. It's powered by +the same speedbar.el integration you've always known, except this +one's optionally accessible from the keyboard, just like any other +side window. Hit '<RET>' over a nick to spawn a "/QUERY" or a +"Lastlog" (Occur) session. See 'erc-nickbar-mode' for more. + ** The option 'erc-timestamp-use-align-to' is more versatile. While this option has always offered to right-align stamps via the 'display' text property, it's now more effective at doing so when set diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 5a3b312b53b..2f26985f74d 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -2006,6 +2006,7 @@ erc-modules :greedy t (const :tag "autoaway: Set away status automatically" autoaway) (const :tag "autojoin: Join channels automatically" autojoin) + (const :tag "bufbar: Show ERC buffers in a side window" bufbar) (const :tag "button: Buttonize URLs, nicknames, and other text" button) (const :tag "capab: Mark unidentified users on servers supporting CAPAB" capab-identify) @@ -2026,6 +2027,7 @@ erc-modules move-to-prompt) (const :tag "netsplit: Detect netsplits" netsplit) (const :tag "networks: Provide data about IRC networks" networks) + (const :tag "nickbar: Show nicknames in a dyamic side window" nickbar) (const :tag "nicks: Uniquely colorize nicknames in target buffers" nicks) (const :tag "noncommands: Don't display non-IRC commands after evaluation" noncommands) diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index de472527bde..4432dc58082 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -1951,9 +1951,9 @@ erc-handle-irc-url (kill-buffer "#chan"))) (defconst erc-tests--modules - '( autoaway autojoin button capab-identify completion dcc fill identd + '( autoaway autojoin bufbar button capab-identify completion dcc fill identd imenu irccontrols keep-place list log match menu move-to-prompt netsplit - networks nicks noncommands notifications notify page readonly + networks nickbar nicks noncommands notifications notify page readonly replace ring sasl scrolltobottom services smiley sound spelling stamp track truncate unmorse xdcc)) -- 2.40.0 --=-=-=--
"J.P." <jp@HIDDEN>
:emacs-erc@HIDDEN, bug-gnu-emacs@HIDDEN
.
Full text available.emacs-erc@HIDDEN, bug-gnu-emacs@HIDDEN
:bug#63595
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.