X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-server.el;h=be1c8a7c5d140bea194405f83f4690fb6f9d5d2c;hp=34c6e3d27bff2eccb74d90ab37cddc444f3f6e56;hb=bf27d4b355aae87061f5911a0aff028ff3c81781;hpb=882acdc3888c53dea8bb0bd961b00d763f1eeced diff --git a/lisp/riece-server.el b/lisp/riece-server.el index 34c6e3d..be1c8a7 100644 --- a/lisp/riece-server.el +++ b/lisp/riece-server.el @@ -72,7 +72,7 @@ the `riece-server-keyword-map' variable." plist) (setq plist (cons `(:host ,host) plist)) (unless (equal service "") - (setq plist (cons `(:service ,(string-to-int service)) plist))) + (setq plist (cons `(:service ,(string-to-number service)) plist))) (unless (equal password "") (setq plist (cons `(:password ,(substring password 1)) plist))) (apply #'nconc plist)))) @@ -162,8 +162,7 @@ the `riece-server-keyword-map' variable." (setq riece-send-size 0)) (while (and (not (riece-queue-empty riece-send-queue)) (<= riece-send-size riece-max-send-size)) - (setq string (riece-encode-coding-string - (riece-queue-dequeue riece-send-queue)) + (setq string (riece-queue-dequeue riece-send-queue) length (length string)) (if (> length riece-max-send-size) (message "Long message (%d > %d)" length riece-max-send-size) @@ -193,13 +192,21 @@ the `riece-server-keyword-map' variable." (if (riece-server-opened "") ""))))) -(defun riece-send-string (string) - (let* ((server-name (riece-current-server-name)) - (process (riece-server-process server-name))) +(defun riece-send-string (string &optional identity) + (let* ((server-name (if identity + (riece-identity-server identity) + (riece-current-server-name))) + (process (riece-server-process server-name)) + coding-system) (unless process (error "%s" (substitute-command-keys "Type \\[riece-command-open-server] to open server."))) - (riece-process-send-string process string))) + (riece-process-send-string + process + (with-current-buffer (process-buffer process) + (if identity + (riece-encode-coding-string-for-identity string identity) + (riece-encode-coding-string string)))))) (defun riece-open-server (server server-name) (let ((protocol (or (plist-get server :protocol) @@ -259,14 +266,17 @@ the `riece-server-keyword-map' variable." (setq riece-send-size 0) (make-local-variable 'riece-last-send-time) (setq riece-last-send-time '(0 0 0)) - (make-local-variable 'riece-obarray) - (setq riece-obarray (make-vector riece-obarray-size 0)) + (make-local-variable 'riece-user-obarray) + (setq riece-user-obarray (make-vector riece-user-obarray-size 0)) + (make-local-variable 'riece-channel-obarray) + (setq riece-channel-obarray (make-vector riece-channel-obarray-size 0)) (make-local-variable 'riece-coding-system) (buffer-disable-undo) (erase-buffer))) (defun riece-close-server-process (process) - (run-hooks 'riece-after-close-hook) + (with-current-buffer (process-buffer process) + (run-hooks 'riece-after-close-hook)) (kill-buffer (process-buffer process)) (setq riece-server-process-alist (delq (rassq process riece-server-process-alist)