aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorF. Jason Park2024-11-29 15:56:47 -0800
committerF. Jason Park2024-12-20 18:18:02 -0800
commit1c960bda91237c92f9f602bcb8538ad500c0bc49 (patch)
treee84e32174dfb1653b852de397f7f3854d60c21ea
parente9591fae5e7ba772b63c6cc548bb5ebe68f583e6 (diff)
downloademacs-1c960bda91237c92f9f602bcb8538ad500c0bc49.tar.gz
emacs-1c960bda91237c92f9f602bcb8538ad500c0bc49.zip
Use smarter default for erc-server-reconnect-function
* doc/misc/erc.texi (Sample Configuration): Remove customization in `use-package' declaration for `erc-server-reconnect-function' as well as related language in the customization walk-through. Do this because the new default incorporates `erc-server-delayed-check-reconnect' behavior for compatible connect functions. * etc/ERC-NEWS: Announce new default for `erc-server-reconnect-function'. * lisp/erc/erc-backend.el (erc-server-reconnect-function): Change default to `erc-server-prefer-check-reconnect'. (erc-server-delayed-check-reconnect): Use `process-send-string' instead of `send-string'. (erc--server-delayed-check-connectors): New variable. (erc-server-prefer-check-reconnect): New function. * test/lisp/erc/erc-scenarios-base-auto-recon.el (erc-scenarios-base-auto-recon-unavailable) (erc-scenarios-base-auto-recon-no-proto): Remove unnecessary `erc-server-reconnect-function' binding because the new default incorporates the behavior being tested for. * test/lisp/erc/erc-scenarios-base-buffer-display.el (erc-scenarios-base-buffer-display--reconnect-common): * test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el (erc-scenarios-common--base-compat-no-rename-bouncer): * test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el (erc-scenarios-base-netid-bouncer--recon-base): * test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el (erc-scenarios-base-netid-bouncer--recon-both): * test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el (erc-scenarios-base-netid-bouncer--reconnect-id-foo) (erc-scenarios-base-netid-bouncer--reconnect-id-bar): * test/lisp/erc/erc-scenarios-base-reconnect.el (erc-scenarios-base-reconnect-timer) (erc-scenarios-base-cancel-reconnect): * test/lisp/erc/erc-scenarios-services-misc.el (erc-scenarios-services-misc--reconnect-retry-nick): * test/lisp/erc/erc-scenarios-stamp.el (erc-scenarios-stamp--date-mode/reconnect): Explicitly bind `erc-server-reconnect-function' to `erc-server-delayed-reconnect', the former default, which does not do any probing. (Bug#62044)
-rw-r--r--doc/misc/erc.texi37
-rw-r--r--etc/ERC-NEWS6
-rw-r--r--lisp/erc/erc-backend.el20
-rw-r--r--test/lisp/erc/erc-scenarios-base-auto-recon.el8
-rw-r--r--test/lisp/erc/erc-scenarios-base-buffer-display.el1
-rw-r--r--test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el1
-rw-r--r--test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el3
-rw-r--r--test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el4
-rw-r--r--test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el6
-rw-r--r--test/lisp/erc/erc-scenarios-base-reconnect.el2
-rw-r--r--test/lisp/erc/erc-scenarios-services-misc.el1
-rw-r--r--test/lisp/erc/erc-scenarios-stamp.el1
12 files changed, 55 insertions, 35 deletions
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 0f6b6b8c5be..b5838b3b0ce 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -1340,8 +1340,7 @@ settings (@pxref{Sample configuration via Customize}).
1340 ;; Scroll all windows to prompt when submitting input. 1340 ;; Scroll all windows to prompt when submitting input.
1341 (erc-scrolltobottom-all t) 1341 (erc-scrolltobottom-all t)
1342 1342
1343 ;; Reconnect automatically using a fancy strategy. 1343 ;; Wait a bit longer between automatic reconnect attempts.
1344 (erc-server-reconnect-function #'erc-server-delayed-check-reconnect)
1345 (erc-server-reconnect-timeout 30) 1344 (erc-server-reconnect-timeout 30)
1346 1345
1347 ;; Show new buffers in the current window instead of a split. 1346 ;; Show new buffers in the current window instead of a split.
@@ -1444,30 +1443,18 @@ descriptions just in case you want to disable them later. When
1444finished, hit @kbd{C-x C-s} or click @samp{[Apply and Save]} atop the 1443finished, hit @kbd{C-x C-s} or click @samp{[Apply and Save]} atop the
1445buffer. 1444buffer.
1446 1445
1447Now do the same for another couple options, this time having to do 1446Now do the same for another option, this time having to do with
1448with automatic reconnection. But instead of searching for their print 1447automatic reconnection. But instead of searching for its print name,
1449names, try running @kbd{M-x customize-option @key{RET} @samp{<option>} 1448try running @kbd{M-x customize-option @key{RET}
1450@key{RET}}, replacing @samp{<option>} with: 1449erc-server-reconnect-timeout @key{RET}}. (If it helps, hit @key{TAB}
1450for completion.) As you may have noticed, when customizing options
1451individually, each buffer displays but a single option's widget. For
1452@code{erc-server-reconnect-timeout}, you'll encounter a text field
1453(instead of a button), which works like those in a typical web form.
1454Enter @samp{30} and either hit @kbd{C-x C-s} to save or @key{TAB} over
1455to @samp{[State]} and hit @key{RET} followed by @kbd{1} to persist your
1456changes.
1451 1457
1452@itemize @bullet
1453@item @code{erc-server-reconnect-function}, a function
1454@item @code{erc-server-reconnect-timeout}, a number
1455@end itemize
1456
1457@noindent
1458(If it helps, hit @key{TAB} for completion.) As you may have noticed,
1459when customizing options individually, each buffer displays but a
1460single option's widget. When you get to the buffer for ``Erc Server
1461Reconnect Function'', you'll see that @samp{[Toggle]} has been
1462replaced with @samp{[Value Menu]} and that clicking it reveals three
1463choices in a pop-up window. Enter @kbd{1} to select
1464@code{erc-server-delayed-check-reconnect} before @key{TAB}'ing over to
1465@samp{[State]} and hitting @key{RET}. Enter @kbd{1} again, this time
1466to persists your changes.
1467
1468For the final option, @code{erc-server-reconnect-timeout}, you'll
1469encounter a text field (instead of a button), which works like those
1470in a typical web form. Enter @samp{30} and hit @kbd{C-x C-s} to save.
1471Just for fun, click the group link for @samp{Erc Server} at the bottom 1458Just for fun, click the group link for @samp{Erc Server} at the bottom
1472of the buffer. You could just as well have set the last two options 1459of the buffer. You could just as well have set the last two options
1473from this ``custom group'' buffer alone, which very much resembles the 1460from this ``custom group'' buffer alone, which very much resembles the
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index f3c8645f02d..b7b49956d06 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -62,6 +62,12 @@ of concerns and the newer module's "experimental" status, the migration
62was deemed worth any potential disruption, despite this being a point 62was deemed worth any potential disruption, despite this being a point
63release. ERC appreciates your understanding in this matter. 63release. ERC appreciates your understanding in this matter.
64 64
65** Option 'erc-server-reconnect-function' has a new default.
66ERC 5.6 added 'erc-server-delayed-check-reconnect', whose "probing"
67strategy worked better for most users. While compatibility concerns
68prevented it from becoming the new 'erc-server-reconnect-function'
69outright, a new solution has emerged that defers to it when sensible.
70
65** Entry-point command 'erc-tls' once again considers option 'erc-port'. 71** Entry-point command 'erc-tls' once again considers option 'erc-port'.
66In its zeal to enforce a preference for TLS connections, ERC 5.5 went a 72In its zeal to enforce a preference for TLS connections, ERC 5.5 went a
67bit far in disregarding the useful user option 'erc-port'. When called 73bit far in disregarding the useful user option 'erc-port'. When called
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 311e3a624e6..ab26a3715f1 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -429,15 +429,16 @@ this value to 120 or greater and/or exploring the option
429means of handling this situation on some servers." 429means of handling this situation on some servers."
430 :type 'number) 430 :type 'number)
431 431
432(defcustom erc-server-reconnect-function 'erc-server-delayed-reconnect 432(defcustom erc-server-reconnect-function 'erc-server-prefer-check-reconnect
433 "Function called by the reconnect timer to create a new connection. 433 "Function called by the reconnect timer to create a new connection.
434Called with a server buffer as its only argument. Potential uses 434Called with a server buffer as its only argument. Potential uses
435include exponential backoff and probing for connectivity prior to 435include exponential backoff and probing for connectivity prior to
436dialing. Use `erc-schedule-reconnect' to instead try again later 436dialing. Use `erc-schedule-reconnect' to instead try again later
437and optionally alter the attempts tally." 437and optionally alter the attempts tally."
438 :package-version '(ERC . "5.5") 438 :package-version '(ERC . "5.6.1")
439 :type '(choice (function-item erc-server-delayed-reconnect) 439 :type '(choice (function-item erc-server-delayed-reconnect)
440 (function-item erc-server-delayed-check-reconnect) 440 (function-item erc-server-delayed-check-reconnect)
441 (function-item erc-server-prefer-check-reconnect)
441 function)) 442 function))
442 443
443(defcustom erc-split-line-length 440 444(defcustom erc-split-line-length 440
@@ -879,7 +880,7 @@ Expect BUFFER to be the server buffer for the current connection."
879 (sentinel (lambda (proc event) 880 (sentinel (lambda (proc event)
880 (pcase event 881 (pcase event
881 ("open\n" 882 ("open\n"
882 (run-at-time nil nil #'send-string proc 883 (run-at-time nil nil #'process-send-string proc
883 (format "PING %d\r\n" 884 (format "PING %d\r\n"
884 (time-convert nil 'integer)))) 885 (time-convert nil 'integer))))
885 ((or "connection broken by remote peer\n" 886 ((or "connection broken by remote peer\n"
@@ -901,6 +902,19 @@ Expect BUFFER to be the server buffer for the current connection."
901 (set-process-sentinel proc sentinel)) 902 (set-process-sentinel proc sentinel))
902 (file-error (funcall reschedule nil))))))) 903 (file-error (funcall reschedule nil)))))))
903 904
905(defvar erc--server-delayed-check-connectors
906 '(erc-open-tls-stream erc-open-network-stream)
907 "Functions compatible with `erc-server-delayed-check-reconnect'.")
908
909(defun erc-server-prefer-check-reconnect (buffer)
910 "Defer to another reconnector based on BUFFER's `erc-session-connector'.
911Prefer `erc-server-delayed-check-reconnect' if the connector is known to
912be \"check-aware\". Otherwise, use `erc-server-delayed-reconnect'."
913 (if (memq (buffer-local-value 'erc-session-connector buffer)
914 erc--server-delayed-check-connectors)
915 (erc-server-delayed-check-reconnect buffer)
916 (erc-server-delayed-reconnect buffer)))
917
904(defun erc-server-filter-function (process string) 918(defun erc-server-filter-function (process string)
905 "The process filter for the ERC server." 919 "The process filter for the ERC server."
906 (with-current-buffer (process-buffer process) 920 (with-current-buffer (process-buffer process)
diff --git a/test/lisp/erc/erc-scenarios-base-auto-recon.el b/test/lisp/erc/erc-scenarios-base-auto-recon.el
index 808b1d8c4d4..d6a114147b3 100644
--- a/test/lisp/erc/erc-scenarios-base-auto-recon.el
+++ b/test/lisp/erc/erc-scenarios-base-auto-recon.el
@@ -24,6 +24,10 @@
24 (let ((load-path (cons (ert-resource-directory) load-path))) 24 (let ((load-path (cons (ert-resource-directory) load-path)))
25 (require 'erc-scenarios-common))) 25 (require 'erc-scenarios-common)))
26 26
27;; This tests `erc-server-delayed-check-reconnect', which is called by
28;; `erc-server-prefer-check-reconnect' (the default value of
29;; `erc-server-reconnect-function' as of ERC 5.6.1).
30
27(defun erc-scenarios-base-auto-recon--get-unused-port () 31(defun erc-scenarios-base-auto-recon--get-unused-port ()
28 (let ((server (make-network-process :name "*erc-scenarios-base-auto-recon*" 32 (let ((server (make-network-process :name "*erc-scenarios-base-auto-recon*"
29 :host "localhost" 33 :host "localhost"
@@ -42,7 +46,6 @@
42 (port (erc-scenarios-base-auto-recon--get-unused-port)) 46 (port (erc-scenarios-base-auto-recon--get-unused-port))
43 (erc--server-reconnect-timeout-scale-function (lambda (_) 1)) 47 (erc--server-reconnect-timeout-scale-function (lambda (_) 1))
44 (erc-server-auto-reconnect t) 48 (erc-server-auto-reconnect t)
45 (erc-server-reconnect-function #'erc-server-delayed-check-reconnect)
46 (expect (erc-d-t-make-expecter)) 49 (expect (erc-d-t-make-expecter))
47 (erc-scenarios-common-dialog "base/reconnect") 50 (erc-scenarios-common-dialog "base/reconnect")
48 (dumb-server nil)) 51 (dumb-server nil))
@@ -89,7 +92,7 @@
89 (erc-cmd-RECONNECT "cancel") 92 (erc-cmd-RECONNECT "cancel")
90 (funcall expect 10 "canceled"))))) 93 (funcall expect 10 "canceled")))))
91 94
92;; In this test, a listener accepts but doesn't respond to any messages. 95;; Here, a listener accepts but doesn't respond to any messages.
93 96
94(ert-deftest erc-scenarios-base-auto-recon-no-proto () 97(ert-deftest erc-scenarios-base-auto-recon-no-proto ()
95 :tags '(:expensive-test) 98 :tags '(:expensive-test)
@@ -102,7 +105,6 @@
102 (erc--server-reconnect-timeout-scale-function (lambda (_) 1)) 105 (erc--server-reconnect-timeout-scale-function (lambda (_) 1))
103 (erc--server-reconnect-timeout-check 0.5) 106 (erc--server-reconnect-timeout-check 0.5)
104 (erc-server-auto-reconnect t) 107 (erc-server-auto-reconnect t)
105 (erc-server-reconnect-function #'erc-server-delayed-check-reconnect)
106 (expect (erc-d-t-make-expecter))) 108 (expect (erc-d-t-make-expecter)))
107 109
108 (ert-info ("Session succeeds but cut short") 110 (ert-info ("Session succeeds but cut short")
diff --git a/test/lisp/erc/erc-scenarios-base-buffer-display.el b/test/lisp/erc/erc-scenarios-base-buffer-display.el
index 5c3c526f86d..137db955db5 100644
--- a/test/lisp/erc/erc-scenarios-base-buffer-display.el
+++ b/test/lisp/erc/erc-scenarios-base-buffer-display.el
@@ -40,6 +40,7 @@
40 (port (process-contact dumb-server :service)) 40 (port (process-contact dumb-server :service))
41 (expect (erc-d-t-make-expecter)) 41 (expect (erc-d-t-make-expecter))
42 (erc-server-flood-penalty 0.1) 42 (erc-server-flood-penalty 0.1)
43 (erc-server-reconnect-function #'erc-server-delayed-reconnect)
43 (erc-server-auto-reconnect t) 44 (erc-server-auto-reconnect t)
44 erc-autojoin-channels-alist) 45 erc-autojoin-channels-alist)
45 46
diff --git a/test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el b/test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
index d1124269e0a..0bba0446ce6 100644
--- a/test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
+++ b/test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
@@ -43,6 +43,7 @@
43 (chan-buf-foo (format "#chan@127.0.0.1:%d" port)) 43 (chan-buf-foo (format "#chan@127.0.0.1:%d" port))
44 (chan-buf-bar (format "#chan@127.0.0.1:%d<2>" port)) 44 (chan-buf-bar (format "#chan@127.0.0.1:%d<2>" port))
45 (expect (erc-d-t-make-expecter)) 45 (expect (erc-d-t-make-expecter))
46 (erc-server-reconnect-function #'erc-server-delayed-reconnect)
46 (erc-server-auto-reconnect auto) 47 (erc-server-auto-reconnect auto)
47 erc-server-buffer-foo erc-server-process-foo 48 erc-server-buffer-foo erc-server-process-foo
48 erc-server-buffer-bar erc-server-process-bar) 49 erc-server-buffer-bar erc-server-process-bar)
diff --git a/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el
index e5453c40e56..04ccb86643b 100644
--- a/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el
+++ b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el
@@ -26,6 +26,7 @@
26 26
27(ert-deftest erc-scenarios-base-netid-bouncer--recon-base () 27(ert-deftest erc-scenarios-base-netid-bouncer--recon-base ()
28 :tags '(:expensive-test) 28 :tags '(:expensive-test)
29 (erc-scenarios-common--base-network-id-bouncer--reconnect nil nil)) 29 (let ((erc-server-reconnect-function #'erc-server-delayed-reconnect))
30 (erc-scenarios-common--base-network-id-bouncer--reconnect nil nil)))
30 31
31;;; erc-scenarios-base-netid-bouncer-recon-base.el ends here 32;;; erc-scenarios-base-netid-bouncer-recon-base.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el
index 09ddcef5fa3..f0939d6204a 100644
--- a/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el
+++ b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el
@@ -27,6 +27,8 @@
27 27
28(ert-deftest erc-scenarios-base-netid-bouncer--recon-both () 28(ert-deftest erc-scenarios-base-netid-bouncer--recon-both ()
29 :tags '(:expensive-test) 29 :tags '(:expensive-test)
30 (erc-scenarios-common--base-network-id-bouncer--reconnect 'foo-id 'bar-id)) 30 (let ((erc-server-reconnect-function #'erc-server-delayed-reconnect))
31 (erc-scenarios-common--base-network-id-bouncer--reconnect 'foo-id
32 'bar-id)))
31 33
32;;; erc-scenarios-base-netid-bouncer-recon-both.el ends here 34;;; erc-scenarios-base-netid-bouncer-recon-both.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el
index 253ab4f72c9..d77a4287976 100644
--- a/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el
+++ b/test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el
@@ -26,11 +26,13 @@
26 26
27(ert-deftest erc-scenarios-base-netid-bouncer--reconnect-id-foo () 27(ert-deftest erc-scenarios-base-netid-bouncer--reconnect-id-foo ()
28 :tags '(:expensive-test) 28 :tags '(:expensive-test)
29 (erc-scenarios-common--base-network-id-bouncer--reconnect 'foo-id nil)) 29 (let ((erc-server-reconnect-function #'erc-server-delayed-reconnect))
30 (erc-scenarios-common--base-network-id-bouncer--reconnect 'foo-id nil)))
30 31
31(ert-deftest erc-scenarios-base-netid-bouncer--reconnect-id-bar () 32(ert-deftest erc-scenarios-base-netid-bouncer--reconnect-id-bar ()
32 :tags '(:expensive-test) 33 :tags '(:expensive-test)
33 (erc-scenarios-common--base-network-id-bouncer--reconnect nil 'bar-id)) 34 (let ((erc-server-reconnect-function #'erc-server-delayed-reconnect))
35 (erc-scenarios-common--base-network-id-bouncer--reconnect nil 'bar-id)))
34 36
35 37
36;;; erc-scenarios-base-netid-bouncer-recon-id.el ends here 38;;; erc-scenarios-base-netid-bouncer-recon-id.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-reconnect.el b/test/lisp/erc/erc-scenarios-base-reconnect.el
index 6f968b9fcbc..2dc34362fbf 100644
--- a/test/lisp/erc/erc-scenarios-base-reconnect.el
+++ b/test/lisp/erc/erc-scenarios-base-reconnect.el
@@ -37,6 +37,7 @@
37 (dumb-server (erc-d-run "localhost" t 'timer 'timer 'timer-last)) 37 (dumb-server (erc-d-run "localhost" t 'timer 'timer 'timer-last))
38 (port (process-contact dumb-server :service)) 38 (port (process-contact dumb-server :service))
39 (expect (erc-d-t-make-expecter)) 39 (expect (erc-d-t-make-expecter))
40 (erc-server-reconnect-function #'erc-server-delayed-reconnect)
40 (erc-server-auto-reconnect t) 41 (erc-server-auto-reconnect t)
41 erc-autojoin-channels-alist 42 erc-autojoin-channels-alist
42 erc-server-buffer) 43 erc-server-buffer)
@@ -144,6 +145,7 @@
144 (dumb-server (erc-d-run "localhost" t 'timer 'timer 'timer-last)) 145 (dumb-server (erc-d-run "localhost" t 'timer 'timer 'timer-last))
145 (port (process-contact dumb-server :service)) 146 (port (process-contact dumb-server :service))
146 (expect (erc-d-t-make-expecter)) 147 (expect (erc-d-t-make-expecter))
148 (erc-server-reconnect-function #'erc-server-delayed-reconnect)
147 (erc-server-auto-reconnect t) 149 (erc-server-auto-reconnect t)
148 erc-autojoin-channels-alist 150 erc-autojoin-channels-alist
149 erc-server-buffer) 151 erc-server-buffer)
diff --git a/test/lisp/erc/erc-scenarios-services-misc.el b/test/lisp/erc/erc-scenarios-services-misc.el
index 47d0bcff41a..ee35e8b93db 100644
--- a/test/lisp/erc/erc-scenarios-services-misc.el
+++ b/test/lisp/erc/erc-scenarios-services-misc.el
@@ -155,6 +155,7 @@
155 (dumb-server (erc-d-run "localhost" t 'reconnect-retry 155 (dumb-server (erc-d-run "localhost" t 'reconnect-retry
156 'reconnect-retry-again)) 156 'reconnect-retry-again))
157 (port (process-contact dumb-server :service)) 157 (port (process-contact dumb-server :service))
158 (erc-server-reconnect-function #'erc-server-delayed-reconnect)
158 (erc-server-auto-reconnect t) 159 (erc-server-auto-reconnect t)
159 (erc-modules `(services-regain sasl ,@erc-modules)) 160 (erc-modules `(services-regain sasl ,@erc-modules))
160 (erc-services-regain-alist 161 (erc-services-regain-alist
diff --git a/test/lisp/erc/erc-scenarios-stamp.el b/test/lisp/erc/erc-scenarios-stamp.el
index 8aea091333b..86074a9c35a 100644
--- a/test/lisp/erc/erc-scenarios-stamp.el
+++ b/test/lisp/erc/erc-scenarios-stamp.el
@@ -188,6 +188,7 @@
188 ((erc-scenarios-common-dialog "base/reconnect") 188 ((erc-scenarios-common-dialog "base/reconnect")
189 (erc-server-flood-penalty 0.1) 189 (erc-server-flood-penalty 0.1)
190 (erc-stamp--tz t) 190 (erc-stamp--tz t)
191 (erc-server-reconnect-function #'erc-server-delayed-reconnect)
191 (erc-server-auto-reconnect t) 192 (erc-server-auto-reconnect t)
192 ;; Start close to midnight: 2024-06-02T23:58:11.055Z 193 ;; Start close to midnight: 2024-06-02T23:58:11.055Z
193 (erc-stamp--current-time (if (< emacs-major-version 29) 194 (erc-stamp--current-time (if (< emacs-major-version 29)