X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-handle.el;h=cf5e0be11bb56dff0ac8f0177f43fd02dd1899fd;hp=e83fbe5ac739eaf295d49d54d65420b7f8844f8a;hb=39e9974840411db591958263f41f420f436f10fb;hpb=a90da5167ee52cbf7b1320a4c6a4465b8b10075d diff --git a/lisp/riece-handle.el b/lisp/riece-handle.el index e83fbe5..cf5e0be 100644 --- a/lisp/riece-handle.el +++ b/lisp/riece-handle.el @@ -29,6 +29,21 @@ (require 'riece-channel) (require 'riece-naming) (require 'riece-signal) +(require 'riece-mode) +(require 'riece-000) +(require 'riece-200) +(require 'riece-300) +(require 'riece-400) +(require 'riece-500) + +(defun riece-default-handle-numeric-reply + (client-prefix prefix number name string) + (riece-insert + (list riece-dialogue-buffer riece-others-buffer) + (concat client-prefix + (riece-concat-server-name + (mapconcat #'identity (riece-split-parameters string) " ")) + "\n"))) (defun riece-handle-nick-message (prefix string) (let* ((old (riece-prefix-nickname prefix)) @@ -44,11 +59,12 @@ (riece-naming-assert-rename old new) (if (riece-identity-member old-identity riece-current-channels) (setq channels (cons new channels))) - (riece-insert-change (mapcar - (lambda (channel) - (riece-channel-buffer (riece-make-identity - channel riece-server-name))) - channels) + (riece-insert-change (delq nil (mapcar + (lambda (channel) + (riece-channel-buffer + (riece-make-identity + channel riece-server-name))) + channels)) (format "%s -> %s\n" (riece-format-identity old-identity t) (riece-format-identity new-identity t))) @@ -145,7 +161,6 @@ (message (nth 1 parameters)) (user-identity (riece-make-identity user riece-server-name))) (while channels - (riece-naming-assert-part user (car channels)) (let* ((channel-identity (riece-make-identity (car channels) riece-server-name)) (buffer (riece-channel-buffer channel-identity))) @@ -171,6 +186,7 @@ (riece-format-identity channel-identity t)) message)) "\n"))) + (riece-naming-assert-part user (car channels)) (setq channels (cdr channels))))) (defun riece-handle-kick-message (prefix string) @@ -218,17 +234,17 @@ (user-identity (riece-make-identity user riece-server-name))) ;; If you are talking with the user, quit it. (if (riece-identity-member user-identity riece-current-channels) - (riece-part-channel user)) + (riece-part-channel user-identity)) (setq pointer channels) (while pointer (riece-naming-assert-part user (car pointer)) (setq pointer (cdr pointer))) (let ((buffers - (mapcar - (lambda (channel) - (riece-channel-buffer (riece-make-identity channel - riece-server-name))) - channels))) + (delq nil (mapcar + (lambda (channel) + (riece-channel-buffer (riece-make-identity + channel riece-server-name))) + channels)))) (riece-insert-change buffers (concat @@ -267,11 +283,11 @@ (riece-naming-assert-part user (car pointer)) (setq pointer (cdr pointer))) (let ((buffers - (mapcar - (lambda (channel) - (riece-channel-buffer (riece-make-identity channel - riece-server-name))) - channels))) + (delq nil (mapcar + (lambda (channel) + (riece-channel-buffer (riece-make-identity + channel riece-server-name))) + channels)))) (riece-insert-change buffers (concat @@ -344,68 +360,6 @@ topic)) "\n"))))) -(defun riece-parse-modes (string) - (let ((start 0) - result) - (while (and (string-match "[-+]\\([^ ]*\\) *" string start) - (= (match-beginning 0) start)) - (let ((toggle (eq (aref string 0) ?+)) - (modes (string-to-list (match-string 1 string)))) - (setq start (match-end 0)) - (while modes - (if (and (string-match "\\([^-+][^ ]*\\) *" string start) - (= (match-beginning 0) start)) - (setq start (match-end 0) - result (cons (list (car modes) toggle - (match-string 1 string)) - result)) - (setq result (cons (list (car modes) toggle) - result))) - (setq modes (cdr modes))))) - (nreverse result))) - -(defun riece-handle-channel-modes (channel modes) - (while modes - (cond - ((eq (car (car modes)) ?o) - (riece-channel-toggle-operator channel - (nth 2 (car modes)) - (nth 1 (car modes))) - (riece-emit-signal 'channel-operators-changed - (riece-make-identity channel - riece-server-name) - (riece-make-identity (nth 2 (car modes)) - riece-server-name) - (nth 1 (car modes)))) - ((eq (car (car modes)) ?v) - (riece-channel-toggle-speaker channel - (nth 2 (car modes)) - (nth 1 (car modes))) - (riece-emit-signal 'channel-speakers-changed - (riece-make-identity channel - riece-server-name) - (riece-make-identity (nth 2 (car modes)) - riece-server-name) - (nth 1 (car modes)))) - ((eq (car (car modes)) ?b) - (riece-channel-toggle-banned channel - (nth 2 (car modes)) - (nth 1 (car modes)))) - ((eq (car (car modes)) ?e) - (riece-channel-toggle-uninvited channel - (nth 2 (car modes)) - (nth 1 (car modes)))) - ((eq (car (car modes)) ?I) - (riece-channel-toggle-invited channel - (nth 2 (car modes)) - (nth 1 (car modes)))) - (t - (apply #'riece-channel-toggle-mode channel (car modes)))) - (setq modes (cdr modes))) - (riece-emit-signal 'channel-modes-changed - (riece-make-identity channel - riece-server-name))) - (defun riece-handle-mode-message (prefix string) (let* ((user (riece-prefix-nickname prefix)) (user-identity (riece-make-identity user riece-server-name)) @@ -414,7 +368,8 @@ (setq channel (match-string 1 string) string (substring string (match-end 0))) (if (string-match (concat "^" riece-channel-regexp "$") channel) - (riece-handle-channel-modes channel (riece-parse-modes string))) + (riece-naming-assert-channel-modes channel + (riece-parse-modes string))) (let* ((channel-identity (riece-make-identity channel riece-server-name)) (buffer (riece-channel-buffer channel-identity))) (riece-insert-change