:type 'function
:group 'liece-vars)
-;;; @ internal access methods
-;;;
-(defmacro liece-nick-get-joined-channels (nick)
+;;; Nick status functions
+(defun liece-nick-get-joined-channels (nick)
"Return channels as list NICK is joined."
- `(get (intern ,nick liece-obarray) 'chnl))
+ (get (intern (or nick liece-real-nickname) liece-obarray) 'join))
-(defmacro liece-nick-get-user-at-host (nick)
+(defun liece-nick-get-user-at-host (nick)
"Return user-at-host as string NICK is joined."
- `(get (intern ,nick liece-obarray) 'user-at-host))
+ (get (intern (or nick liece-real-nickname) liece-obarray) 'user-at-host))
-(defmacro liece-nick-set-user-at-host (nick uah)
+(defun liece-nick-set-user-at-host (nick user-at-host)
"Set user at host as string NICK is joined."
- `(put (intern ,nick liece-obarray) 'user-at-host ,uah))
-
-(defmacro liece-nick-mark-as-apart (nick)
- "Mark NICK is temporary apart."
- `(put (intern ,nick liece-obarray) 'part t))
+ (put (intern (or nick liece-real-nickname) liece-obarray)
+ 'user-at-host user-at-host))
-(defmacro liece-nick-unmark-as-apart (nick)
+(defun liece-nick-mark-as-part (part &optional nick)
"Mark NICK is temporary apart."
- `(put (intern ,nick liece-obarray) 'part nil))
+ (put (intern (or nick liece-real-nickname) liece-obarray) 'part part))
-(defmacro liece-nick-get-modes (nick)
+(defun liece-nick-get-modes (&optional nick)
"Return modes as string NICK is joined."
- `(get (intern ,nick liece-obarray) 'mode))
-
-(defmacro liece-nick-add-mode (mode &optional nick)
- "Add MODE as char to NICK."
- `(let* ((n (intern ,nick liece-obarray))
- (modes (liece-string-to-list (or (get n 'mode) ""))))
- (put n 'mode (mapconcat #'char-to-string
- (or (memq ,mode modes)
- (cons ,mode modes)) ""))))
-
-(defmacro liece-nick-remove-mode (mode &optional nick)
- "Remove MODE as char to NICK."
- `(let* ((n (intern ,nick liece-obarray))
- (modes (liece-string-to-list (or (get n 'mode) ""))))
- (delq ,mode modes)
- (put n 'mode (mapconcat #'char-to-string modes ""))))
-
-(defmacro liece-nick-set-mode (val mode &optional nick)
- "Set MODE as char to CHNL."
- `(if ,val
- (liece-nick-add-mode ,mode ,nick)
- (liece-nick-remove-mode ,mode ,nick)))
+ (get (intern (or nick liece-real-nickname) liece-obarray) 'mode))
+
+(defun liece-nick-add-mode (mode &optional nick)
+ "Add MODE as char to NICK.
+MODE is a string splitted into characters one by one."
+ (let ((modes
+ (liece-string-to-list
+ (or (liece-nick-get-modes nick) ""))))
+ (or (memq mode modes)
+ (push mode modes))
+ (put (intern (or nick liece-real-nickname) liece-obarray)
+ 'mode (mapconcat #'char-to-string modes ""))))
+
+(defun liece-nick-remove-mode (mode &optional nick)
+ "Remove MODE from NICK.
+MODE is a string splitted into characters one by one."
+ (let ((modes
+ (liece-string-to-list
+ (or (liece-nick-get-modes nick) ""))))
+ (delq mode modes)
+ (put (intern (or nick liece-real-nickname) liece-obarray)
+ 'mode (mapconcat #'char-to-string modes ""))))
+
+(defun liece-nick-set-mode (nick mode toggle)
+ "Add or remove channel MODE of NICK.
+MODE is a string splitted into characters one by one.
+If FLAG is non-nil, given modes are added to the user.
+Otherwise they are removed from the user."
+ (if toggle
+ (liece-nick-add-mode mode nick)
+ (liece-nick-remove-mode mode nick)))
(defmacro liece-nick-strip (nick)
`(if (and ,nick (memq (aref ,nick 0) '(?@ ?+ ? )))
(liece-channel-set-operator ,chnl user t))
((char-equal flag ?+)
(liece-channel-set-voice ,chnl user t)))
- (or (string-list-member-ignore-case ,chnl (get u 'chnl))
- (put u 'chnl (cons ,chnl (get u 'chnl))))
+ (or (string-list-member-ignore-case ,chnl (get u 'join))
+ (put u 'join (cons ,chnl (get u 'join))))
(or (string-list-member-ignore-case user (get c 'nick))
(put c 'nick (cons user (get c 'nick))))))
(c (intern ,chnl liece-obarray)))
(liece-channel-set-operator ,chnl ,user nil)
(liece-channel-set-voice ,chnl ,user nil)
- (put u 'chnl (string-list-remove-ignore-case ,chnl (get u 'chnl)))
+ (put u 'join (string-list-remove-ignore-case ,chnl (get u 'join)))
(put c 'nick (string-list-remove-ignore-case ,user (get c 'nick)))))
;;;###liece-autoload
;;;###liece-autoload
(defun liece-nick-change (old new)
(let* ((old (liece-nick-strip old)) (new (liece-nick-strip new))
- (chnls (get (intern old liece-obarray) 'chnl)) chnl nbuf)
+ (chnls (get (intern old liece-obarray) 'join)) chnl nbuf)
(liece-change-nick-of old new)
(if new
- (put (intern new liece-obarray) 'chnl chnls))
+ (put (intern new liece-obarray) 'join chnls))
(unintern old liece-obarray)
(dolist (chnl chnls)
(if (null new)