"Add MODE as char to CHNL."
`(let ((modes (string-to-char-list (or (liece-channel-get-modes ,chnl)
""))))
- (pushnew ,mode modes)
+ (or (memq ,mode modes)
+ (push ,mode modes))
(put (intern (or ,chnl liece-current-channel) liece-obarray)
'mode (mapconcat #'char-to-string modes ""))))
(defmacro liece-channel-add-ban (pattern &optional chnl)
"Add ban PATTERN as char to CHNL."
`(let ((patterns (liece-channel-get-bans ,chnl)))
- (add-to-list 'patterns ,pattern)
+ (or (string-list-member-ignore-case ,pattern patterns)
+ (push ,pattern patterns))
(put (intern (or ,chnl liece-current-channel) liece-obarray)
'ban patterns)))
(defmacro liece-channel-add-exception (pattern &optional chnl)
"Add exception PATTERN as char to CHNL."
`(let ((patterns (liece-channel-get-exceptions ,chnl)))
- (pushnew ,pattern patterns)
+ (or (string-list-member-ignore-case ,pattern patterns)
+ (push ,pattern patterns))
(put (intern (or ,chnl liece-current-channel) liece-obarray)
'exception patterns)))
(defmacro liece-channel-add-invite (pattern &optional chnl)
"Add invite PATTERN as char to CHNL."
`(let ((patterns (liece-channel-get-invites ,chnl)))
- (pushnew ,pattern patterns)
+ (or (string-list-member-ignore-case ,pattern patterns)
+ (push ,pattern patterns))
(put (intern (or ,chnl liece-current-channel) liece-obarray)
'invite patterns)))