diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2010-01-25 13:49:23 -0500 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2010-01-25 13:49:23 -0500 |
commit | 361bbf574b7ae0e0a3975307b8f00c355870a3e0 (patch) | |
tree | fe72731cbf34243917fc9d5c8e9586ad6486924b | |
parent | e2396d80cbf7e9d20c05eff44c1c8f04ecb9341c (diff) | |
download | emacs-361bbf574b7ae0e0a3975307b8f00c355870a3e0.tar.gz |
Fix erc reconnection via non-default connectors (Bug#4958).
* erc-backend.el (erc-session-connector): New var.
(erc-server-reconnect): Use it to reconnect via old connector (Bug#4958).
* erc.el (erc-determine-parameters): Save erc-server-connect-function to erc-session-connector.
-rw-r--r-- | lisp/erc/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/erc/erc-backend.el | 10 | ||||
-rw-r--r-- | lisp/erc/erc.el | 4 |
3 files changed, 20 insertions, 3 deletions
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog index 0ba18b68cfb..8daf590ee89 100644 --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog @@ -1,3 +1,12 @@ +2010-01-25 Vivek Dasmohapatra <vivek@etla.org> + + * erc-backend.el (erc-session-connector): New var. + (erc-server-reconnect): Use it to reconnect via old + connector (Bug#4958). + + * erc.el (erc-determine-parameters): Save + erc-server-connect-function to erc-session-connector. + 2009-11-03 Stefan Monnier <monnier@iro.umontreal.ca> * erc.el (erc-display-line-1, erc-process-away): diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 1ab9467ab3a..8b533b4c255 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -130,6 +130,10 @@ Use `erc-current-nick' to access this.") "The server name used to connect to for this session.") (make-variable-buffer-local 'erc-session-server) +(defvar erc-session-connector nil + "The function used to connect to this session (nil for the default).") +(make-variable-buffer-local 'erc-session-connector) + (defvar erc-session-port nil "The port used to connect to.") (make-variable-buffer-local 'erc-session-port) @@ -538,8 +542,10 @@ Make sure you are in an ERC buffer when running this." (erc-set-active-buffer (current-buffer)) (setq erc-server-last-sent-time 0) (setq erc-server-lines-sent 0) - (erc-open erc-session-server erc-session-port erc-server-current-nick - erc-session-user-full-name t erc-session-password)))) + (let ((erc-server-connect-function (or erc-session-connector + 'open-network-stream))) + (erc-open erc-session-server erc-session-port erc-server-current-nick + erc-session-user-full-name t erc-session-password))))) (defun erc-server-filter-function (process string) "The process filter for the ERC server." diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index d2445414c83..b76f486f155 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -5654,11 +5654,13 @@ user input." "Determine the connection and authentication parameters. Sets the buffer local variables: +- `erc-session-connector' - `erc-session-server' - `erc-session-port' - `erc-session-full-name' - `erc-server-current-nick'" - (setq erc-session-server (erc-compute-server server) + (setq erc-session-connector erc-server-connect-function + erc-session-server (erc-compute-server server) erc-session-port (or port erc-default-port) erc-session-user-full-name (erc-compute-full-name name)) (erc-set-current-nick (erc-compute-nick nick))) |