From: "J.P." <jp@neverwas.me>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: Amin Bandali <bandali@gnu.org>,
51753@debbugs.gnu.org, emacs-erc@gnu.org,
Stefan Kangas <stefan@marxist.se>
Subject: bug#51753: ERC switches to channel buffer on reconnect
Date: Fri, 19 Nov 2021 02:36:40 -0800 [thread overview]
Message-ID: <87czmwjutj.fsf__36418.2339211524$1637318297$gmane$org@neverwas.me> (raw)
In-Reply-To: <877ddf9sht.fsf@gnus.org> (Lars Ingebrigtsen's message of "Thu, 11 Nov 2021 06:22:06 +0100")
[-- Attachment #1: Type: text/plain, Size: 1448 bytes --]
Lars Ingebrigtsen <larsi@gnus.org> writes:
>> However, if people want something different to happen when
>> automatically reconnecting, we'd probably have to remember whether
>> `erc-server-reconnect-count' was ever positive before crossing the
>> logical connection threshold for the current session.
>>
>> This may come down to having `erc-connection-established' record the
>> count prior to resetting it (perhaps in a new, internal variable). And
>> then, during re-JOINs, `erc-setup-buffer' could weigh that recorded
>> value against some new option, like an `erc-display-reconnect' (or
>> whatever), and proceed accordingly.
>
> Sounds good to me.
I wasn't sure if that meant I was supposed to work on this. If not,
please disregard.
Otherwise, the tests are in #48598 [1]. As for the name of the option
itself, I basically punted by going with `erc-reconnect-buffer' to try
and stay close to `erc-join-buffer'. If that doesn't matter, perhaps
`erc-reconnect-display' would be a better fit since we already have an
`erc-query-display' (even though that one's not as closely related).
Anyone with an opinion, please advise. Thanks.
[1] Around line 4736:
https://gitlab.com/jpneverwas/erc-tools/-/raw/master/bugs/48598/patches/wip/0013-Update-ERC-scenarios-with-session-centric-naming.patch
Or browsable (JS):
https://gitlab.com/jpneverwas/erc-v3/-/blob/1333bda3c0d11ff06b1b2acbb27864c90d5ba303/test/erc-scenarios.el#L1668
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Customize-displaying-of-ERC-buffers-on-reconnect.patch --]
[-- Type: text/x-patch, Size: 3415 bytes --]
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "F. Jason Park" <jp@neverwas.me>
Date: Thu, 18 Nov 2021 23:39:54 -0800
Subject: [PATCH 01/29] Customize displaying of ERC buffers on reconnect
* lisp/erc/erc-backend.el (erc--server-last-reconnect-count):
Add variable to record last reconnect tally.
* lisp/erc/erc.el (erc-reconnect-buffer): Add option to specify
channel-buffer display behavior on reconnect.
(erc-setup-buffer): Use option `erc-reconnect-buffer' if warranted.
(erc-connection-established): Record reconnect count in internal var
before resetting.
---
lisp/erc/erc-backend.el | 3 +++
lisp/erc/erc.el | 24 ++++++++++++++++++++++--
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 69f63dfbc4..4b39bd8a30 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -193,6 +193,9 @@ erc-server-connected
(defvar-local erc-server-reconnect-count 0
"Number of times we have failed to reconnect to the current server.")
+(defvar-local erc--server-last-reconnect-count 0
+ "Snapshot of reconnect count when connection established.")
+
(defvar-local erc-server-quitting nil
"Non-nil if the user requests a quit.")
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index c5a4fbe5a0..21ae25d920 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1521,6 +1521,22 @@ erc-join-buffer
(const :tag "Use current buffer" buffer)
(const :tag "Use current buffer" t)))
+(defcustom erc-reconnect-buffer nil
+ "How (and whether) to display a channel buffer upon reconnecting.
+
+This only affects automatic reconnections and is ignored when issuing a
+/reconnect command or reinvoking `erc-tls' with the same args (assuming
+success, of course). See `erc-join-buffer' for a description of
+possible values."
+ :group 'erc-buffers
+ :type '(choice (const :tag "Use value of `erc-join-buffer'" nil)
+ (const :tag "Split window and select" window)
+ (const :tag "Split window, don't select" window-noselect)
+ (const :tag "New frame" frame)
+ (const :tag "Bury in new buffer" bury)
+ (const :tag "Use current buffer" buffer)
+ (const :tag "Use current buffer" t)))
+
(defcustom erc-frame-alist nil
"Alist of frame parameters for creating erc frames.
A value of nil means to use `default-frame-alist'."
@@ -1950,7 +1966,10 @@ erc-update-modules
(defun erc-setup-buffer (buffer)
"Consults `erc-join-buffer' to find out how to display `BUFFER'."
- (pcase erc-join-buffer
+ (pcase (if (zerop (erc-with-server-buffer
+ erc--server-last-reconnect-count))
+ erc-join-buffer
+ (or erc-reconnect-buffer erc-join-buffer))
('window
(if (active-minibuffer-window)
(display-buffer buffer)
@@ -4722,7 +4741,8 @@ erc-connection-established
(nick (car (erc-response.command-args parsed)))
(buffer (process-buffer proc)))
(setq erc-server-connected t)
- (setq erc-server-reconnect-count 0)
+ (setq erc--server-last-reconnect-count erc-server-reconnect-count
+ erc-server-reconnect-count 0)
(erc-update-mode-line)
(erc-set-initial-user-mode nick buffer)
(erc-server-setup-periodical-ping buffer)
--
2.31.1
next prev parent reply other threads:[~2021-11-19 10:36 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-10 15:09 bug#51753: ERC switches to channel buffer on reconnect Stefan Kangas
2021-11-11 3:14 ` J.P.
2021-11-11 3:29 ` Lars Ingebrigtsen
[not found] ` <87bl2re5eg.fsf@gnus.org>
2021-11-11 5:13 ` J.P.
[not found] ` <87lf1ve0m4.fsf@neverwas.me>
2021-11-11 5:22 ` Lars Ingebrigtsen
[not found] ` <877ddf9sht.fsf@gnus.org>
2021-11-19 10:36 ` J.P. [this message]
[not found] ` <87czmwjutj.fsf@neverwas.me>
2021-11-19 11:45 ` Stefan Kangas
[not found] ` <CADwFkm=_RaiRkwte+JPRvuM4fntevprWr-qjaBaG6D+Gud_UoQ@mail.gmail.com>
2021-11-19 13:13 ` J.P.
2021-11-20 7:21 ` J.P.
[not found] ` <87ilwnnvfs.fsf@neverwas.me>
2021-11-20 9:09 ` Stefan Kangas
[not found] ` <CADwFkmnL1ugFn4VYi--5ygJnYu4RmES6VGjku6j92fy+8B6yeA@mail.gmail.com>
2021-11-21 22:54 ` J.P.
[not found] ` <87sfvp5dd5.fsf@neverwas.me>
2021-12-02 19:43 ` Stefan Kangas
[not found] ` <CADwFkmmqNW-CyrxUU1-TiqEvUhwYe=zzVOO_q2iEAHmQYorudw@mail.gmail.com>
2021-12-03 5:31 ` J.P.
2023-04-14 14:11 ` bug#51753: bug#55540: 29.0.50; ERC launches autojoin-channels in current frame instead of original frame J.P.
-- strict thread matches above, loose matches on Subject: below --
2022-05-20 13:06 Pankaj Jangid
2022-05-23 1:56 ` bug#51753: ERC switches to channel buffer on reconnect J.P.
[not found] ` <87a6b92ers.fsf@neverwas.me>
2022-05-23 2:50 ` Pankaj Jangid
2022-05-23 7:48 ` J.P.
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='87czmwjutj.fsf__36418.2339211524$1637318297$gmane$org@neverwas.me' \
--to=jp@neverwas.me \
--cc=51753@debbugs.gnu.org \
--cc=bandali@gnu.org \
--cc=emacs-erc@gnu.org \
--cc=larsi@gnus.org \
--cc=stefan@marxist.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).