(cf. the last paragraph of `kill-buffer' docstring)
[riece] / lisp / riece-server.el
index 565dd10..20aedf8 100644 (file)
@@ -39,7 +39,7 @@
       (:username riece-username)
       (:password)
       (:function #'open-network-stream)
       (:username riece-username)
       (:password)
       (:function #'open-network-stream)
-      (:coding-system riece-default-coding-system))
+      (:coding riece-default-coding-system))
     "Mapping from keywords to default values.
 All keywords that can be used must be listed here."))
 
     "Mapping from keywords to default values.
 All keywords that can be used must be listed here."))
 
@@ -63,15 +63,6 @@ the `riece-server-keyword-map' variable."
 (put 'riece-server-keyword-bind 'lisp-indent-function 1)
 (put 'riece-server-keyword-bind 'edebug-form-spec '(form body))
 
 (put 'riece-server-keyword-bind 'lisp-indent-function 1)
 (put 'riece-server-keyword-bind 'edebug-form-spec '(form body))
 
-(defun riece-start-server (server &optional server-name)
-  (if server-name
-      (message "Connecting to IRC server on %s..." server-name)
-    (message "Connecting to IRC server..."))
-  (prog1 (riece-open-server server server-name)
-    (if server-name
-       (message "Connecting to IRC server on %s...done" server-name)
-      (message "Connecting to IRC server...done"))))
-
 (defun riece-clear-system ()
   (while riece-buffer-list
     (if (and (get-buffer (car riece-buffer-list))
 (defun riece-clear-system ()
   (while riece-buffer-list
     (if (and (get-buffer (car riece-buffer-list))
@@ -111,20 +102,23 @@ the `riece-server-keyword-map' variable."
            riece-save-variables-are-dirty t))
     (cdr entry)))
 
            riece-save-variables-are-dirty t))
     (cdr entry)))
 
-(defun riece-open-server (server server-name)
-  "Open chat server on HOST.
-If HOST is nil, use value of environment variable \"IRCSERVER\".
-If optional argument SERVICE is non-nil, open by the service name."
+(defun riece-open-server (server &optional server-name)
+  (if server-name
+      (message "Connecting to %s..." server-name)
+    (message "Connecting to IRC server..."))
   (riece-server-keyword-bind server
     (let* (selective-display
           (coding-system-for-read 'binary)
           (coding-system-for-write 'binary)
           (process
   (riece-server-keyword-bind server
     (let* (selective-display
           (coding-system-for-read 'binary)
           (coding-system-for-write 'binary)
           (process
-           (funcall function "IRC" (if server-name
-                                       (format " *IRC*%s" server-name)
-                                     " *IRC*")
+           (funcall function "IRC"
+                    (if server-name
+                        (format " *IRC*%s" server-name)
+                      " *IRC*")
                     host service)))
       (riece-reset-process-buffer process)
                     host service)))
       (riece-reset-process-buffer process)
+      (with-current-buffer (process-buffer process)
+       (setq riece-server-name server-name))
       (set-process-sentinel process 'riece-sentinel)
       (set-process-filter process 'riece-filter)
       (if (or password
       (set-process-sentinel process 'riece-sentinel)
       (set-process-filter process 'riece-filter)
       (if (or password
@@ -134,7 +128,6 @@ If optional argument SERVICE is non-nil, open by the service name."
                                             (or password
                                                 (riece-read-passwd
                                                  "Password: ")))))
                                             (or password
                                                 (riece-read-passwd
                                                  "Password: ")))))
-      (setq riece-reconnect-with-password nil)
       (riece-process-send-string process
                                 (format "USER %s * * :%s\r\n"
                                         (user-real-login-name)
       (riece-process-send-string process
                                 (format "USER %s * * :%s\r\n"
                                         (user-real-login-name)
@@ -144,8 +137,15 @@ If optional argument SERVICE is non-nil, open by the service name."
       (with-current-buffer (process-buffer process)
        (setq riece-last-nickname riece-real-nickname
              riece-nick-accepted 'sent
       (with-current-buffer (process-buffer process)
        (setq riece-last-nickname riece-real-nickname
              riece-nick-accepted 'sent
-             riece-coding-system coding-system))
-      process)))
+             riece-coding-system coding))
+      (if server-name
+         (setq riece-server-process-alist
+               (cons (cons server-name process)
+                     riece-server-process-alist))
+       (setq riece-server-process process))))
+  (if server-name
+      (message "Connecting to %s...done" server-name)
+    (message "Connecting to IRC server...done")))
 
 (defun riece-reset-process-buffer (process)
   (save-excursion
 
 (defun riece-reset-process-buffer (process)
   (save-excursion
@@ -177,14 +177,14 @@ If optional argument SERVICE is non-nil, open by the service name."
       (set-process-filter process nil))
   (if (eq 'riece-sentinel (process-sentinel process))
       (set-process-sentinel process nil))
       (set-process-filter process nil))
   (if (eq 'riece-sentinel (process-sentinel process))
       (set-process-sentinel process nil))
-  (when (memq (process-status process) '(open run))
-    (riece-process-send-string process
-                              (if quit-message
-                                  (format "QUIT :%s\r\n" quit-message)
-                                "QUIT\r\n"))
-    (delete-process process)
-    (unless riece-debug
-      (kill-buffer (process-buffer process)))))
+  (if (memq (process-status process) '(open run))
+      (riece-process-send-string process
+                                (if quit-message
+                                    (format "QUIT :%s\r\n" quit-message)
+                                  "QUIT\r\n")))
+  (if riece-debug
+      (delete-process process)
+    (kill-buffer (process-buffer process))))
 
 (eval-when-compile
   (autoload 'riece-exit "riece"))
 
 (eval-when-compile
   (autoload 'riece-exit "riece"))