diff lisp/erc/erc.el @ 75092:e566d4fc8dd2

Update from erc--emacs--22 Highlights: - New /RECONNECT command. - Improve default method for auto-identify to nickserv. - Fix another erc-iswitchb bug. - Fix reconnect lockup (defaulting to twice before giving up). - Fix reconnect on ban. Revision: emacs@sv.gnu.org/emacs--devo--0--patch-587 Creator: Michael Olson <mwolson@gnu.org>
author Miles Bader <miles@gnu.org>
date Fri, 05 Jan 2007 02:09:07 +0000
parents e6b28ccae7d8
children f45c5edf0be4
line wrap: on
line diff
--- a/lisp/erc/erc.el	Thu Jan 04 22:14:36 2007 +0000
+++ b/lisp/erc/erc.el	Fri Jan 05 02:09:07 2007 +0000
@@ -1672,21 +1672,22 @@
     (require 'iswitchb))
   (let ((enabled iswitchb-mode))
     (or enabled (iswitchb-mode 1))
-    (let ((iswitchb-make-buflist-hook
-	   (lambda ()
-	     (setq iswitchb-temp-buflist
-		   (mapcar 'buffer-name
-			   (erc-buffer-list
-			    nil
-			    (when arg erc-server-process)))))))
-      (switch-to-buffer
-       (iswitchb-read-buffer
-	"Switch-to: "
-	(if (boundp 'erc-modified-channels-alist)
-	    (buffer-name (caar (last erc-modified-channels-alist)))
-	  nil)
-	t)))
-    (or enabled (iswitchb-mode -1))))
+    (unwind-protect
+	(let ((iswitchb-make-buflist-hook
+	       (lambda ()
+		 (setq iswitchb-temp-buflist
+		       (mapcar 'buffer-name
+			       (erc-buffer-list
+				nil
+				(when arg erc-server-process)))))))
+	  (switch-to-buffer
+	   (iswitchb-read-buffer
+	    "Switch-to: "
+	    (if (boundp 'erc-modified-channels-alist)
+		(buffer-name (caar (last erc-modified-channels-alist)))
+	      nil)
+	    t)))
+      (or enabled (iswitchb-mode -1)))))
 
 (defun erc-channel-list (proc)
   "Return a list of channel buffers.
@@ -1888,10 +1889,11 @@
 	(connected-p (unless connect erc-server-connected))
 	(buffer (erc-get-buffer-create server port channel))
 	(old-buffer (current-buffer))
-	(old-point (point))
+	old-point
 	continued-session)
     (erc-update-modules)
     (set-buffer buffer)
+    (setq old-point (point))
     (erc-mode)
     (setq erc-server-announced-name server-announced-name)
     (setq erc-server-connected connected-p)
@@ -3165,6 +3167,12 @@
 (defalias 'erc-cmd-GQ 'erc-cmd-GQUIT)
 (put 'erc-cmd-GQUIT 'do-not-parse-args t)
 
+(defun erc-cmd-RECONNECT ()
+  "Try to reconnect to the current IRC server."
+  (setq erc-server-reconnect-count 0)
+  (erc-server-reconnect)
+  t)
+
 (defun erc-cmd-SERVER (server)
   "Connect to SERVER, leaving existing connection intact."
   (erc-log (format "cmd: SERVER: %s" server))