erc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Erc-commit] [commit][master] Try to fix bug with /reconnect and a kille


From: mwolson
Subject: [Erc-commit] [commit][master] Try to fix bug with /reconnect and a killed server buffer
Date: Sun, 14 Oct 2007 00:49:20 -0400

commit 75373f6d2bfb8a2245d4848a402bc6e42f6784ea
Author: Michael W. Olson <address@hidden>
Date:   Mon Aug 13 21:54:48 2007 -0400

    Try to fix bug with /reconnect and a killed server buffer
    
    * erc-backend.el (erc-server-reconnect): If the server buffer has been
      killed, use the current buffer instead.  If the current buffer is not
      an ERC buffer, give an error.  This fixes a bug when /reconnect is run
      from a channel buffer whose server buffer has been deleted.  Thanks to
      jbms for the report.
    
    * erc.el (erc-cmd-RECONNECT): Use simpler logic, and use buffer-live-p
      rather than bufferp.

diff --git a/ChangeLog b/ChangeLog
index 4c602d6..50b8dd4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,16 @@
 2007-08-14  Michael Olson  <address@hidden>
 
+       * erc-backend.el (erc-server-reconnect): If the server buffer has
+       been killed, use the current buffer instead.  If the current
+       buffer is not an ERC buffer, give an error.  This fixes a bug when
+       /reconnect is run from a channel buffer whose server buffer has
+       been deleted.  Thanks to jbms for the report.
+
        * erc.el (erc-command-no-process-p): Fix bug: the return value of
        erc-extract-command-from-line is a list rather than a single
        symbol.  Thanks to jbms for the report.
+       (erc-cmd-RECONNECT): Use simpler logic, and use buffer-live-p
+       rather than bufferp.
 
 2007-08-12  Michael Olson  <address@hidden>
 
diff --git a/erc-backend.el b/erc-backend.el
index d0ec812..75bef89 100644
--- a/erc-backend.el
+++ b/erc-backend.el
@@ -550,11 +550,12 @@ We will store server variables in the buffer given by 
BUFFER."
 (defun erc-server-reconnect ()
 "Reestablish the current IRC connection.
 Make sure you are in an ERC buffer when running this."
-  (let ((server (erc-server-buffer)))
-    (unless (and server
-                 (buffer-live-p server))
-      (error "Couldn't switch to server buffer"))
-    (with-current-buffer server
+  (let ((buffer (erc-server-buffer)))
+    (unless (buffer-live-p buffer)
+      (if (eq major-mode 'erc-mode)
+          (error "Reconnect must be run from an ERC buffer")
+        (setq buffer (current-buffer))))
+    (with-current-buffer buffer
       (erc-update-mode-line)
       (erc-set-active-buffer (current-buffer))
       (setq erc-server-last-sent-time 0)
diff --git a/erc.el b/erc.el
index fd709ed..5d29ace 100644
--- a/erc.el
+++ b/erc.el
@@ -3256,9 +3256,11 @@ the message given by REASON."
 
 (defun erc-cmd-RECONNECT ()
   "Try to reconnect to the current IRC server."
-  (let ((buffer (or (erc-server-buffer) (current-buffer)))
+  (let ((buffer (erc-server-buffer))
        (process nil))
-    (with-current-buffer (if (bufferp buffer) buffer (current-buffer))
+    (unless (buffer-live-p buffer)
+      (setq buffer (current-buffer)))
+    (with-current-buffer buffer
       (setq erc-server-quitting nil)
       (setq erc-server-reconnecting t)
       (setq erc-server-reconnect-count 0)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]