+ (riece-emit-signal 'user-operator-changed
+ (riece-make-identity user riece-server-name)
+ operator)
+ (riece-insert-info buffer (concat (riece-concat-user-status
+ status info)
+ "\n"))
+ (riece-insert-info
+ (if (and riece-channel-buffer-mode
+ (not (eq buffer riece-channel-buffer)))
+ (list riece-dialogue-buffer riece-others-buffer)
+ riece-dialogue-buffer)
+ (concat
+ (riece-concat-server-name
+ (riece-concat-user-status
+ status
+ (concat
+ (riece-format-identity
+ (riece-make-identity channel riece-server-name)
+ t)
+ " "
+ info)))
+ "\n")))))
+
+(defun riece-handle-315-message (_prefix _number _name _string))
+(defun riece-handle-318-message (_prefix _number _name _string))
+(defun riece-handle-323-message (_prefix _number _name _string))
+
+(defun riece-handle-366-message (_prefix _number _name string)
+ "RPL_ENDOFNAMES \"<channel> :End of NAMES list\""
+ (if (string-match "^\\([^ ]+\\) " string)
+ (let* ((channel (match-string 1 string))
+ (channel-identity (riece-make-identity channel
+ riece-server-name))
+ (buffer (riece-channel-buffer channel-identity))
+ (entry (riece-identity-assoc channel riece-353-message-alist t))
+ (string (cdr entry))
+ (start 0)
+ users)
+ (if entry
+ (setq riece-353-message-alist
+ (delq entry riece-353-message-alist)))
+ (while (string-match
+ (concat "\\([@+]\\)?\\([^ ]+\\) +")
+ string start)
+ (put-text-property (match-beginning 2) (match-end 2)
+ 'riece-identity
+ (riece-make-identity (match-string 2 string)
+ riece-server-name)
+ string)
+ (setq start (match-end 0)
+ users (cons (if (match-beginning 1)
+ (if (eq (aref string (match-beginning 1)) ?@)
+ (list (match-string 2 string) ?o)
+ (if (eq (aref string (match-beginning 1)) ?+)
+ (list (match-string 2 string) ?v)))
+ (list (match-string 2 string)))
+ users)))
+ (setq users (nreverse users))
+ (riece-naming-assert-channel-users users channel)