X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-filter.el;h=44b5edafbe9f663567090cd74a752bcaacf4b41b;hb=255cb67bb0bb83e1409d08efdad27a61ca03fdd9;hp=dc72e92766950e42a86677eba9fc90dd44a0b5ac;hpb=37c5bbf35081931f322575f9ba9b841410f2921b;p=riece diff --git a/lisp/riece-filter.el b/lisp/riece-filter.el index dc72e92..44b5eda 100644 --- a/lisp/riece-filter.el +++ b/lisp/riece-filter.el @@ -41,9 +41,9 @@ (format "riece-handle-default-%03d-message" base-number)))) (if (and function (symbol-function function)) - (riece-ignore-errors (symbol-name function) - (funcall function prefix number name - (riece-decode-coding-string string)))))) + (riece-funcall-ignore-errors (symbol-name function) + function prefix number name + (riece-decode-coding-string string))))) (defun riece-handle-message (prefix message string) (if (and prefix @@ -56,51 +56,51 @@ (let ((function (intern-soft (concat "riece-handle-" message "-message"))) (hook (intern (concat "riece-" message "-hook"))) (after-hook (intern (concat "riece-after-" message "-hook")))) - (unless (riece-ignore-errors (symbol-name hook) - (run-hook-with-args-until-success hook prefix string)) + (unless (riece-funcall-ignore-errors (symbol-name hook) + #'run-hook-with-args-until-success + hook prefix string) (if function - (riece-ignore-errors (symbol-name function) - (funcall function prefix string))) - (riece-ignore-errors (symbol-name after-hook) - (run-hook-with-args-until-success after-hook prefix string))))) + (riece-funcall-ignore-errors (symbol-name function) + function prefix string)) + (riece-funcall-ignore-errors (symbol-name after-hook) + #'run-hook-with-args-until-success + after-hook prefix string)))) -(defun riece-chomp-string (string) - (if (string-match "\r?\n\\'" string) +(defsubst riece-chomp-string (string) + (if (string-match "\r\\'" string) (substring string 0 (match-beginning 0)) string)) (defun riece-filter (process input) (save-excursion (set-buffer (process-buffer process)) - (goto-char riece-read-point) - (unless riece-debug - (delete-region (riece-line-beginning-position) (point-min)) - (setq riece-read-point (point))) + (goto-char (point-max)) (insert input) - (goto-char (prog1 riece-read-point - (setq riece-read-point (point)))) + (goto-char riece-read-point) (beginning-of-line) - (while (and (not (eobp)) - (looking-at ".*\n")) ;the input line is not finished + (while (looking-at ".*\n") ;the input line is finished (save-excursion (if (looking-at - ":\\([^ ]+\\) +\\([0-5][0-9][0-9]\\) +\\([^ ]+\\) +\\(.*\\)\n") + ":\\([^ ]+\\) +\\([0-5][0-9][0-9]\\) +\\([^ ]+\\) +\\(.*\\)") (riece-handle-numeric-reply (match-string 1) ;prefix (string-to-number (match-string 2)) ;number (match-string 3) ;name - (riece-chomp-string (match-string 4))) ;reply string - (if (looking-at "\\(:\\([^ ]+\\) +\\)?\\([^ ]+\\) +\\(.*\\)\n") + (riece-chomp-string (match-string 4))) ;reply string + (if (looking-at "\\(:\\([^ ]+\\) +\\)?\\([^ ]+\\) +\\(.*\\)") (riece-handle-message (match-string 2) ;optional prefix (match-string 3) ;command - (riece-chomp-string (match-string 4))) ;params & trailing + (riece-chomp-string (match-string 4))) ;params & trailing (if riece-debug (message "Weird message from server: %s" (buffer-substring (point) (progn (end-of-line) (point)))))))) - (forward-line)))) + (forward-line)) + (unless riece-debug + (delete-region (point-min) (point))) + (setq riece-read-point (point)))) (eval-when-compile (autoload 'riece-exit "riece")) @@ -119,10 +119,11 @@ riece-server-name))) (if riece-debug (if (equal server-name "") - (message "Connection closed: %s" - (substring status 0 (1- (length status)))) - (message "Connection to \"%s\" closed: %s" - server-name (substring status 0 (1- (length status))))) + (riece-debug (format "Connection closed: %s" + (substring status 0 (1- (length status))))) + (riece-debug (format "Connection to \"%s\" closed: %s" + server-name + (substring status 0 (1- (length status)))))) (if (equal server-name "") (message "Connection closed") (message "Connection to \"%s\" closed" server-name)))