X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-misc.el;h=bc06db1305a531ac2b0300c4753e1b6c7a99fe9e;hb=3ee8a4af3c8254994a95ffac8926af4e7b32f8bd;hp=bc1e2c9deea655567621ebe024845a87782d605a;hpb=f516351a876fa03cc66862c4a5a3730306af958d;p=riece diff --git a/lisp/riece-misc.el b/lisp/riece-misc.el index bc1e2c9..bc06db1 100644 --- a/lisp/riece-misc.el +++ b/lisp/riece-misc.el @@ -32,6 +32,7 @@ (require 'riece-server) (require 'riece-user) (require 'riece-mode) +(require 'riece-cache) (defun riece-get-buffer-create (name &optional init-major-mode) (let ((buffer (get-buffer name))) @@ -214,12 +215,17 @@ user-at-host)) (defun riece-get-users-on-server (server-name) - (delq nil (mapcar (lambda (identity) - (if (riece-user-p (riece-identity-prefix identity)) - identity)) - (riece-get-identities-on-server server-name)))) + (riece-with-server-buffer server-name + (let (identities) + (mapatoms + (lambda (user) + (setq identities + (cons (riece-make-identity (symbol-name user) server-name) + identities))) + (riece-cache-map-hash-obarray riece-user-cache)) + identities))) -(defun riece-get-identities-on-server (server-name) +(defun riece-get-channels-on-server (server-name) (riece-with-server-buffer server-name (let (identities) (mapatoms @@ -228,14 +234,12 @@ (cons (riece-make-identity (symbol-name channel) server-name) identities))) riece-channel-obarray) - (mapatoms - (lambda (user) - (setq identities - (cons (riece-make-identity (symbol-name user) server-name) - identities))) - riece-user-obarray) identities))) +(defun riece-get-identities-on-server (server-name) + (nconc (riece-get-channels-on-server server-name) + (riece-get-users-on-server server-name))) + (defun riece-check-channel-commands-are-usable (&optional channel) (unless riece-current-channel (error (substitute-command-keys