* riece.el (riece-buffer-alist): Init riece-debug-buffer.
[riece] / lisp / riece-filter.el
index dc72e92..a07d0c6 100644 (file)
@@ -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
     (unless (riece-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-funcall-ignore-errors (symbol-name function)
+                                      function prefix string))
       (riece-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"))
                         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)))