From: ueno Date: Thu, 19 Feb 2004 01:32:36 +0000 (+0000) Subject: * riece-300.el (riece-handle-353-message): Add 'riece-property on X-Git-Tag: signal-slot-branchpoint~3 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5662cc0bf85455db3fb50768fd918a0abe4946ac;p=elisp%2Friece.git * riece-300.el (riece-handle-353-message): Add 'riece-property on user list string. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 995730b..fc1de8d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2004-02-19 Daiki Ueno + + * riece-300.el (riece-handle-353-message): Add 'riece-property on + user list string. + 2004-02-17 Daiki Ueno * riece-lsdb.el: Add autoload setting for diff --git a/lisp/riece-300.el b/lisp/riece-300.el index 3fd9acc..7306843 100644 --- a/lisp/riece-300.el +++ b/lisp/riece-300.el @@ -220,24 +220,31 @@ "RPL_NAMREPLY \" :[[@|+] [[@|+] [...]]]\"." (if (string-match "^[=\*@] *\\([^ ]+\\) +:" string) (let ((channel (match-string 1 string)) - users) + (start 0)) (setq string (substring string (match-end 0))) - (if (string-match " *$" string) - (setq string (substring string 0 (match-beginning 0)))) - (setq users (split-string string)) - (while users - (if (eq (aref (car users) 0) ?@) - (progn - (riece-naming-assert-join (substring (car users) 1) channel) - (riece-channel-toggle-operator - channel (substring (car users) 1) t)) - (if (eq (aref (car users) 0) ?+) - (progn - (riece-naming-assert-join (substring (car users) 1) channel) - (riece-channel-toggle-speaker - channel (substring (car users) 1) t)) - (riece-naming-assert-join (car users) channel))) - (setq users (cdr users))) + (while (string-match + (concat "\\([@+]\\)?\\(" riece-user-regexp "\\) ") + 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)) + (if (match-beginning 1) + (if (eq (aref string (match-beginning 1)) ?@) + (progn + (riece-naming-assert-join + (match-string 2 string) channel) + (riece-channel-toggle-operator + channel (match-string 2 string) t)) + (if (eq (aref string (match-beginning 1)) ?+) + (progn + (riece-naming-assert-join + (match-string 2 string) channel) + (riece-channel-toggle-speaker + channel (match-string 2 string) t)))) + (riece-naming-assert-join (match-string 2 string) channel))) (let* ((channel-identity (riece-make-identity channel riece-server-name)) (buffer (riece-channel-buffer channel-identity)))