X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-button.el;h=384d1aa7785f1995201c1a953fa6757401f95f9f;hb=4660d6d552470b0a2c5bbb33323026b6ec32a772;hp=258277251025c97cd50ed9e8d82201be38d408b8;hpb=478bffcd22a1ec6dea4e8ed2ecbb0f562cbd41a2;p=riece diff --git a/lisp/riece-button.el b/lisp/riece-button.el index 2582772..384d1aa 100644 --- a/lisp/riece-button.el +++ b/lisp/riece-button.el @@ -113,7 +113,7 @@ This function is used as a callback for a channel button." (defun riece-user-button-set-operators () (interactive) - (let (group) + (let (group users) (if (riece-region-active-p) (save-excursion (riece-scan-property-region @@ -123,29 +123,25 @@ This function is used as a callback for a channel button." (setq group (cons (get-text-property start 'riece-identity) group))))) (setq group (list (get-text-property (point) 'riece-identity)))) + (setq users (riece-with-server-buffer + (riece-identity-server riece-current-channel) + (riece-channel-get-users (riece-identity-prefix + riece-current-channel)))) (if (setq group (delq nil (mapcar (lambda (identity) - (riece-with-server-buffer (riece-identity-server - riece-current-channel) - (if (and (member - (riece-identity-prefix identity) - (riece-channel-get-users - (riece-identity-prefix - riece-current-channel))) - (not (member - (riece-identity-prefix identity) - (riece-channel-get-operators - (riece-identity-prefix - riece-current-channel))))) - identity))) + (unless (memq ?o (cdr (riece-identity-assoc + (riece-identity-prefix identity) + users + t))) + identity)) group))) (riece-command-set-operators (mapcar #'riece-identity-prefix group))))) (defun riece-user-button-set-speakers () (interactive) - (let (group) + (let (group users) (if (riece-region-active-p) (save-excursion (riece-scan-property-region @@ -155,35 +151,25 @@ This function is used as a callback for a channel button." (setq group (cons (get-text-property start 'riece-identity) group))))) (setq group (list (get-text-property (point) 'riece-identity)))) + (setq users (riece-with-server-buffer + (riece-identity-server riece-current-channel) + (riece-channel-get-users (riece-identity-prefix + riece-current-channel)))) (if (setq group (delq nil (mapcar (lambda (identity) - (riece-with-server-buffer (riece-identity-server - riece-current-channel) - (if (and (member - (riece-identity-prefix identity) - (riece-channel-get-users - (riece-identity-prefix - riece-current-channel))) - (not (member - (riece-identity-prefix identity) - (riece-channel-get-operators - (riece-identity-prefix - riece-current-channel)))) - (not (member - (riece-identity-prefix identity) - (riece-channel-get-speakers - (riece-identity-prefix - riece-current-channel))))) - identity))) + (unless (memq ?v (cdr (riece-identity-assoc + (riece-identity-prefix identity) + users + t))) + identity)) group))) (riece-command-set-speakers (mapcar #'riece-identity-prefix group))))) (defun riece-user-button-finger () (interactive) - (riece-command-finger - (riece-identity-prefix (get-text-property (point) 'riece-identity)))) + (riece-command-finger (get-text-property (point) 'riece-identity))) (defun riece-make-identity-button-map () (let ((map (make-sparse-keymap)))