(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)))
(goto-char point) ;select-window changes current point
(recenter riece-window-center-line))))
(run-hook-with-args 'riece-after-insert-functions start (point))))
- (setq buffers (cdr buffers)))
- ;; This triggers forced redisplay under GNU Emacs.
- (sit-for 0))
+ (setq buffers (cdr buffers))))
(defun riece-insert-change (buffer message)
(riece-insert buffer (concat riece-change-prefix message)))
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