X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-300.el;h=8510941521bf0b8b6b982541c7589e080ca40f3e;hb=3ee8a4af3c8254994a95ffac8926af4e7b32f8bd;hp=8cd85af360cd22ffe6b799445838d3a90bf233b6;hpb=028c7fa941ae51ebf85391baabd904890b6ea2d4;p=riece diff --git a/lisp/riece-300.el b/lisp/riece-300.el index 8cd85af..8510941 100644 --- a/lisp/riece-300.el +++ b/lisp/riece-300.el @@ -25,6 +25,9 @@ ;;; Code: (require 'riece-misc) +(require 'riece-naming) +(require 'riece-signal) +(require 'riece-display) (eval-when-compile (autoload 'riece-default-handle-numeric-reply "riece-handle")) @@ -40,8 +43,7 @@ " "))) (while replies (if (string-match - (concat "^\\(" riece-user-regexp - "\\)\\(\\*\\)?=\\([-+]\\)\\([^ ]+\\)") + (concat "^\\([^ ]+\\)\\(\\*\\)?=\\([-+]\\)\\([^ ]+\\)") (car replies)) (let ((user (match-string 1 (car replies))) (operator (not (null (match-beginning 2)))) @@ -159,7 +161,7 @@ "\n")))) (defun riece-handle-313-message (prefix number name string) - (if (string-match (concat "^" riece-user-regexp) string) + (if (string-match "^[^ ]+" string) (let ((user (match-string 0 string))) (riece-insert-info (list riece-dialogue-buffer riece-others-buffer) @@ -255,27 +257,29 @@ (cons (cons channel (substring string (match-end 0))) riece-353-message-alist)))))) -(defun riece-handle-322-message (prefix number name string) - (if (string-match "^\\([^ ]+\\) \\([0-9]+\\) :?" string) - (let* ((channel (match-string 1 string)) - (visible (match-string 2 string)) - (topic (substring string (match-end 0)))) - (riece-channel-set-topic (riece-get-channel channel) topic) - (let* ((channel-identity (riece-make-identity channel - riece-server-name)) - (buffer (riece-channel-buffer channel-identity))) - (riece-insert-info buffer (concat visible " users, topic: " - topic "\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 - (format "%s: %s users, topic: %s" - (riece-format-identity channel-identity t) visible topic)) - "\n")))))) +(defun riece-handle-322-message (prefix number name decoded) + (let* ((parameters (riece-split-parameters (riece-decoded-string decoded))) + (channel (car parameters)) + (visible (nth 1 parameters)) + (channel-identity (riece-make-identity channel riece-server-name)) + (buffer (riece-channel-buffer channel-identity)) + topic) + (setq parameters (riece-split-parameters + (riece-decoded-string-for-identity decoded + channel-identity)) + topic (nth 2 parameters)) + (riece-channel-set-topic (riece-get-channel channel) topic) + (riece-insert-info buffer (concat visible " users, topic: " topic "\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 + (format "%s: %s users, topic: %s" + (riece-format-identity channel-identity t) visible topic)) + "\n")))) (defun riece-handle-324-message (prefix number name string) (if (string-match "^\\([^ ]+\\) \\([^ ]+\\) " string) @@ -299,31 +303,32 @@ mode-string)) "\n")))))) -(defun riece-handle-set-topic (prefix number name string remove) - (if (string-match "^\\([^ ]+\\) :?" string) - (let* ((channel (match-string 1 string)) - (message (substring string (match-end 0))) - (channel-identity (riece-make-identity channel riece-server-name)) - (buffer (riece-channel-buffer channel-identity))) - (if remove - (riece-channel-set-topic (riece-get-channel channel) nil) - (riece-channel-set-topic (riece-get-channel channel) message) - (riece-insert-info buffer (concat "Topic: " message "\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 - (format "Topic for %s: %s" - (riece-format-identity channel-identity t) - message)) - "\n"))) - (riece-emit-signal 'channel-topic-changed - channel-identity - (unless remove - message))))) +(defun riece-handle-set-topic (prefix number name decoded remove) + (let* ((parameters (riece-split-parameters (riece-decoded-string decoded))) + (channel (car parameters)) + topic + (channel-identity (riece-make-identity channel riece-server-name)) + (buffer (riece-channel-buffer channel-identity))) + (if remove + (riece-channel-set-topic (riece-get-channel channel) nil) + (setq parameters (riece-split-parameters + (riece-decoded-string-for-identity decoded + channel-identity)) + topic (nth 1 parameters)) + (riece-channel-set-topic (riece-get-channel channel) topic) + (riece-insert-info buffer (concat "Topic: " topic "\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 + (format "Topic for %s: %s" + (riece-format-identity channel-identity t) + topic)) + "\n"))) + (riece-emit-signal 'channel-topic-changed channel-identity topic))) (defun riece-handle-331-message (prefix number name string) (riece-handle-set-topic prefix number name string t)) @@ -433,7 +438,7 @@ (setq riece-353-message-alist (delq entry riece-353-message-alist))) (while (string-match - (concat "\\([@+]\\)?\\(" riece-user-regexp "\\) *") + (concat "\\([@+]\\)?\\([^ ]+\\) *") string start) (put-text-property (match-beginning 2) (match-end 2) 'riece-identity