X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Friece-misc.el;h=fb511b5c6dc274c1d791b2766399cca3eae4351b;hb=68110589e12c39f8c679f9bf405b7ec30d8b0fe5;hp=2e2a91215f8baf364c78d118f2e23e3b126abfb2;hpb=f50ce77a87afa07c0329141191d6339bf4067341;p=elisp%2Friece.git diff --git a/lisp/riece-misc.el b/lisp/riece-misc.el index 2e2a912..fb511b5 100644 --- a/lisp/riece-misc.el +++ b/lisp/riece-misc.el @@ -19,8 +19,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Code: @@ -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,22 +215,31 @@ 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-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 - (lambda (atom) + (lambda (channel) (setq identities - (cons (riece-make-identity (symbol-name atom) server-name) + (cons (riece-make-identity (symbol-name channel) server-name) identities))) - riece-obarray) + (riece-cache-hash-obarray riece-channel-cache)) 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