* liece-make.el (make-liece-sample-files): Abolish.
[elisp/liece.git] / lisp / liece-channel.el
index c11ca08..1bfe07b 100644 (file)
   "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)))