X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-channel.el;h=2536e5bff59f89cd2d879f3be2f76e292a89913f;hb=31af90ee9dadd320e1820f0524de9dc3460f4ea4;hp=1f0c2936e01aa2f549430b0b1b9150c9957b927c;hpb=0f5d61fb3b22395bab1dd7919be8f74e0e05e064;p=riece diff --git a/lisp/riece-channel.el b/lisp/riece-channel.el index 1f0c293..2536e5b 100644 --- a/lisp/riece-channel.el +++ b/lisp/riece-channel.el @@ -27,21 +27,22 @@ (require 'riece-options) (require 'riece-globals) (require 'riece-identity) +(require 'riece-mode) ;;; Channel object: (defun riece-find-channel (name) "Get a channel object named NAME from the server buffer." (let ((symbol (intern-soft (riece-identity-canonicalize-prefix name) - riece-obarray))) + riece-channel-obarray))) (if symbol (symbol-value symbol)))) (defun riece-forget-channel (name) (let ((symbol (intern-soft (riece-identity-canonicalize-prefix name) - riece-obarray))) + riece-channel-obarray))) (when symbol (makunbound symbol) - (unintern (symbol-name symbol) riece-obarray)))) + (unintern (symbol-name symbol) riece-channel-obarray)))) (defun riece-make-channel (users topic modes banned invited uninvited key) "Make an instance of channel object. @@ -52,11 +53,11 @@ respectively." (defun riece-get-channel (name) (let ((symbol (intern-soft (riece-identity-canonicalize-prefix name) - riece-obarray))) + riece-channel-obarray))) (if symbol (symbol-value symbol) (set (intern (riece-identity-canonicalize-prefix name) - riece-obarray) + riece-channel-obarray) (riece-make-channel nil nil nil nil nil nil nil))))) (defun riece-channel-users (channel) @@ -147,12 +148,13 @@ respectively." (defun riece-channel-toggle-mode (name mode flag) "Add or remove channel MODE of channel." (let* ((channel (riece-get-channel name)) - (modes (riece-channel-modes channel))) + (modes (riece-channel-modes channel)) + (old (riece-mode-assoc (riece-mode-flag mode) modes))) (if flag - (unless (memq mode modes) + (unless old (riece-channel-set-modes channel (cons mode modes))) - (if (memq mode modes) - (riece-channel-set-modes channel (delq mode modes)))))) + (if old + (riece-channel-set-modes channel (delq old modes)))))) (defun riece-channel-toggle-banned (name pattern flag) "Add or remove banned PATTERN of channel." @@ -202,7 +204,8 @@ respectively." (setq user (riece-identity-assoc user users t)) (if flag (if user - (setcdr user (cons ?o (cdr user))) + (unless (memq ?o (cdr user)) + (setcdr user (cons ?o (cdr user)))) (riece-channel-set-users channel (cons (list user ?o) users))) (if user (setcdr user (delq ?o (cdr user))))))) @@ -214,7 +217,8 @@ respectively." (setq user (riece-identity-assoc user users t)) (if flag (if user - (setcdr user (cons ?v (cdr user))) + (unless (memq ?v (cdr user)) + (setcdr user (cons ?v (cdr user)))) (riece-channel-set-users channel (cons (list user ?v) users))) (if user (setcdr user (delq ?v (cdr user)))))))