(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.
(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)
(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."
(if flag
(unless (riece-identity-assoc user users t)
(riece-channel-set-users channel (cons (list user) users)))
- (if (setq user (car (riece-identity-assoc user users t)))
+ (if (setq user (riece-identity-assoc user users t))
(riece-channel-set-users channel (delq user users))))))
(defun riece-channel-toggle-operator (name user flag)
(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)))))))
(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)))))))