* riece.el (riece-save-variables-files): Place ";;; Do not edit
authorueno <ueno>
Sun, 16 Jul 2006 01:07:10 +0000 (01:07 +0000)
committerueno <ueno>
Sun, 16 Jul 2006 01:07:10 +0000 (01:07 +0000)
this file!" at the beginning of ~/.riece/save.

* riece-server.el (riece-reset-process-buffer): Make
riece-filter-running local to the server buffer.
* riece-filter.el (riece-filter): Allow only a message handler to
run at a time.
* riece-globals.el (riece-filter-running): New variable.

lisp/ChangeLog
lisp/riece-filter.el
lisp/riece-globals.el
lisp/riece-server.el
lisp/riece.el

index 6805712..c6b2e50 100644 (file)
@@ -1,3 +1,14 @@
+2006-07-16  Daiki Ueno  <ueno@unixuser.org>
+
+       * riece.el (riece-save-variables-files): Place ";;; Do not edit
+       this file!" at the beginning of ~/.riece/save.
+
+       * riece-server.el (riece-reset-process-buffer): Make
+       riece-filter-running local to the server buffer.
+       * riece-filter.el (riece-filter): Allow only a message handler to
+       run at a time.
+       * riece-globals.el (riece-filter-running): New variable.
+
 2006-06-01  Daiki Ueno  <ueno@unixuser.org>
 
        * riece-ndcc.el: Don't use calc.
index 6ce65bc..1249dd7 100644 (file)
     (set-buffer (process-buffer process))
     (goto-char (point-max))
     (insert input)
-    (goto-char riece-read-point)
-    (beginning-of-line)
-    (while (looking-at ".*\n") ;the input line is finished
-      (save-excursion
-       (if (looking-at
-            ":\\([^ ]+\\) +\\([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 "\\(:\\([^ ]+\\) +\\)?\\([^ ]+\\) +\\(.*\\)")
-             (riece-handle-message
-              (match-string 2)         ;optional prefix
-              (match-string 3)         ;command
-              (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))
-    (unless riece-debug
-      (delete-region (point-min) (point)))
-    (setq riece-read-point (point))))
+    (unless riece-filter-running
+      (unwind-protect
+         (progn
+           (setq riece-filter-running t)
+           (goto-char riece-read-point)
+           (beginning-of-line)
+           (while (looking-at ".*\n")  ;the input line is finished
+             (save-excursion
+               (if (looking-at
+                    ":\\([^ ]+\\) +\\([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 "\\(:\\([^ ]+\\) +\\)?\\([^ ]+\\) +\\(.*\\)")
+                     (riece-handle-message
+                      (match-string 2) ;optional prefix
+                      (match-string 3) ;command
+                      (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))
+           (unless riece-debug
+             (delete-region (point-min) (point)))
+           (setq riece-read-point (point)))
+       (setq riece-filter-running nil)))))
 
 (eval-when-compile
   (autoload 'riece-exit "riece"))
index 5e80bc1..017e037 100644 (file)
@@ -113,6 +113,9 @@ Local to the server buffers.")
 (defvar riece-read-point nil
   "Point at the last input was seen.
 Local to the server buffers.")
+(defvar riece-filter-running nil
+  "Lock of the process filter; non-nil indicates the process filter is running.
+Local to the server buffers.")
 (defvar riece-send-queue nil
   "Send queue for avoiding client flood.
 Local to the server buffers.")
index 8f3872a..5a0db11 100644 (file)
@@ -261,6 +261,7 @@ the `riece-server-keyword-map' variable."
     (make-local-variable 'riece-server-name)
     (make-local-variable 'riece-read-point)
     (setq riece-read-point (point-min))
+    (make-local-variable 'riece-filter-running)
     (make-local-variable 'riece-send-queue)
     (setq riece-send-queue (riece-make-queue))
     (make-local-variable 'riece-send-size)
index 2fc1393..bf38673 100644 (file)
@@ -250,6 +250,8 @@ If optional argument SAFE is nil, overwrite previous definitions."
 (defun riece-save-variables-files ()
   "Save current settings to `riece-saved-variables-file'."
   (with-temp-file riece-saved-variables-file
+    (insert ";;; This file is generated automatically by " riece-version ".\n"
+           ";;; Do not edit this file!\n\n")
     (let ((print-quoted t)
          (print-readably t)
          print-escape-multibyte