X-Git-Url: http://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-misc.el;h=e3ff301f20802662fdda1f20d10b484ab63ba833;hp=c4fa7bc8c8a6e0af4074dcc4eaa409a0934bba45;hb=dc31997f34aea7b2fa4dc918640ea19178c7f3bb;hpb=9174f38ace6e8cd879b41adc4d6aa4b5b727f7ea diff --git a/lisp/riece-misc.el b/lisp/riece-misc.el index c4fa7bc..e3ff301 100644 --- a/lisp/riece-misc.el +++ b/lisp/riece-misc.el @@ -105,9 +105,14 @@ \(i.e. it matches `riece-channel-regexp')" (string-match (concat "^" riece-channel-regexp) string)) +(defun riece-user-p (string) + "Return t if STRING is a user. +\(i.e. it matches `riece-user-regexp')" + (string-match (concat "^" riece-user-regexp) string)) + (defun riece-current-nickname () "Return the current nickname." - (riece-with-server-buffer (riece-identity-server riece-current-channel) + (riece-with-server-buffer (riece-current-server-name) (if riece-real-nickname (riece-make-identity riece-real-nickname riece-server-name)))) @@ -180,17 +185,31 @@ (substring user-at-host 1) user-at-host)) -(defun riece-get-users-on-server () - (riece-with-server-buffer (riece-identity-server riece-current-channel) - (let (users) +(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)))) + +(defun riece-get-identities-on-server (server-name) + (riece-with-server-buffer server-name + (let (identities) (mapatoms (lambda (atom) - (unless (riece-channel-p (symbol-name atom)) - (setq users (cons (symbol-name atom) users)))) + (setq identities + (cons (riece-make-identity (symbol-name atom) server-name) + identities))) riece-obarray) - (if (member riece-real-nickname users) - users - (cons riece-real-nickname users))))) + identities))) + +(defun riece-check-channel-commands-are-usable (&optional channel) + (unless riece-current-channel + (error (substitute-command-keys + "Type \\[riece-command-join] to join a channel"))) + (if (and channel + (not (riece-channel-p (riece-identity-prefix + riece-current-channel)))) + (error "Not on a channel"))) (provide 'riece-misc)