From 606c0b22e4ee2d01de9bcf064205716dca1ef8b3 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Tue, 11 Feb 2025 22:02:16 -0800 Subject: [PATCH] ; Make reconnect detection more readable in erc-open * lisp/erc/erc.el (erc-open): Bind `erc--server-reconnecting' instead of relying on a confusing single-use variable. --- lisp/erc/erc.el | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 755b00f375c..6781c3d117d 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -2634,13 +2634,18 @@ side effect of setting the current buffer to the one it returns. Use (old-recon-count erc-server-reconnect-count) (old-point nil) (delayed-modules nil) - (continued-session (or erc--server-reconnecting - erc--target-priors - (and-let* (((not target)) - (m (buffer-local-value - 'erc-input-marker buffer)) - ((marker-position m))) - (buffer-local-variables buffer))))) + (erc--server-reconnecting + (or erc--server-reconnecting + ;; Interpret an entry-point invocation reassociated with + ;; an existing session via explicit ID as an "implied" + ;; reconnection, but only if it at least tried to connect. + (and-let* ((id) (connect) ; `target' must be null + (m (buffer-local-value 'erc-input-marker buffer)) + ((marker-position m)) + ((buffer-local-value 'erc-server-process buffer)) + (netid (buffer-local-value 'erc-networks--id buffer))) + (cl-assert (string-equal (erc-networks--id-given netid) id)) + (buffer-local-variables buffer))))) (when connect (run-hook-with-args 'erc-before-connect server port nick)) (set-buffer buffer) (setq old-point (point)) @@ -2705,7 +2710,8 @@ side effect of setting the current buffer to the one it returns. Use (when erc-log-p (get-buffer-create (concat "*ERC-DEBUG: " server "*")))) - (erc--initialize-markers old-point continued-session) + (erc--initialize-markers old-point (or erc--server-reconnecting + erc--target-priors)) (erc-determine-parameters server port nick full-name user passwd) (save-excursion (run-mode-hooks) (dolist (mod (car delayed-modules))