]> code.delx.au - gnu-emacs/commitdiff
Miscellaneous tq-related fixes.
authorMiles Bader <miles@gnu.org>
Sun, 27 Aug 2006 10:42:40 +0000 (10:42 +0000)
committerMiles Bader <miles@gnu.org>
Sun, 27 Aug 2006 10:42:40 +0000 (10:42 +0000)
* lisp/emacs-lisp/tq.el: Small grammar fix in comments.
  (tq-enqueue): Check for existence of queue rather than the head queue
  item's question, which was a no-op.
  (tq-filter, tq-process-buffer): Make sure the process buffer exists
  before making it the current buffer.

* lispref/processes.texi (Transaction Queues): Remove stray quote
  character.

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-411
Creator:  Michael Olson <mwolson@gnu.org>

lisp/ChangeLog
lisp/emacs-lisp/tq.el
lispref/ChangeLog
lispref/processes.texi

index 2d2038960663a4cd7869973460208e0eab311bfa..187f2ff3fae4a688d709e9d9634236c785f4d5cb 100644 (file)
@@ -1,3 +1,11 @@
+2006-08-27  Michael Olson  <mwolson@gnu.org>
+
+       * emacs-lisp/tq.el: Small grammar fix in comments.
+       (tq-enqueue): Check for existence of queue rather than the
+       head queue item's question, which was a no-op.
+       (tq-filter, tq-process-buffer): Make sure the process buffer
+       exists before making it the current buffer.
+
 2006-08-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * term/mac-win.el (mac-apple-event-map): Rename hicommand to hi-command.
index 2126d7663fce2d058d0fdc96af8a82496e60e308..1e1e143f0f06fb08d9deade3fc56aef08335143a 100644 (file)
@@ -66,7 +66,7 @@
 ;; regexp: regular expression that matches the end of a response from
 ;; the process
 (defun tq-queue-head-regexp   (tq) (car (cdr (car (tq-queue tq)))))
-;; closure: additional data to pass to function
+;; closure: additional data to pass to the function
 (defun tq-queue-head-closure  (tq) (car (cdr (cdr (car (tq-queue tq))))))
 ;; fn: function to call upon receiving a complete response from the
 ;; process
@@ -119,7 +119,7 @@ If DELAY-QUESTION is non-nil, delay sending this question until
 the process has finished replying to any previous questions.
 This produces more reliable results with some processes."
   (let ((sendp (or (not delay-question)
-                  (not (tq-queue-head-question tq)))))
+                  (not (tq-queue tq)))))
     (tq-queue-add tq (unless sendp question) regexp closure fn)
     (when sendp
       (process-send-string (tq-process tq) question))))
@@ -131,35 +131,39 @@ This produces more reliable results with some processes."
 
 (defun tq-filter (tq string)
   "Append STRING to the TQ's buffer; then process the new data."
-  (with-current-buffer (tq-buffer tq)
-    (goto-char (point-max))
-    (insert string)
-    (tq-process-buffer tq)))
+  (let ((buffer (tq-buffer tq)))
+    (when (buffer-live-p buffer)
+      (with-current-buffer buffer
+       (goto-char (point-max))
+       (insert string)
+       (tq-process-buffer tq)))))
 
 (defun tq-process-buffer (tq)
   "Check TQ's buffer for the regexp at the head of the queue."
-  (set-buffer (tq-buffer tq))
-  (if (= 0 (buffer-size)) ()
-    (if (tq-queue-empty tq)
-       (let ((buf (generate-new-buffer "*spurious*")))
-         (copy-to-buffer buf (point-min) (point-max))
-         (delete-region (point-min) (point))
-         (pop-to-buffer buf nil)
-         (error "Spurious communication from process %s, see buffer %s"
-                (process-name (tq-process tq))
-                (buffer-name buf)))
-      (goto-char (point-min))
-      (if (re-search-forward (tq-queue-head-regexp tq) nil t)
-         (let ((answer (buffer-substring (point-min) (point))))
-           (delete-region (point-min) (point))
-           (unwind-protect
-               (condition-case nil
-                   (funcall (tq-queue-head-fn tq)
-                            (tq-queue-head-closure tq)
-                            answer)
-                 (error nil))
-             (tq-queue-pop tq))
-           (tq-process-buffer tq))))))
+  (let ((buffer (tq-buffer tq)))
+    (when (buffer-live-p buffer)
+      (set-buffer buffer)
+      (if (= 0 (buffer-size)) ()
+       (if (tq-queue-empty tq)
+           (let ((buf (generate-new-buffer "*spurious*")))
+             (copy-to-buffer buf (point-min) (point-max))
+             (delete-region (point-min) (point))
+             (pop-to-buffer buf nil)
+             (error "Spurious communication from process %s, see buffer %s"
+                    (process-name (tq-process tq))
+                    (buffer-name buf)))
+         (goto-char (point-min))
+         (if (re-search-forward (tq-queue-head-regexp tq) nil t)
+             (let ((answer (buffer-substring (point-min) (point))))
+               (delete-region (point-min) (point))
+               (unwind-protect
+                   (condition-case nil
+                       (funcall (tq-queue-head-fn tq)
+                                (tq-queue-head-closure tq)
+                                answer)
+                     (error nil))
+                 (tq-queue-pop tq))
+               (tq-process-buffer tq))))))))
 
 (provide 'tq)
 
index ca648380cc4f12f5394c09536ef60b845f738c0f..cc3ccac3c7a279df176885799e80921fe2ad584f 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-27  Michael Olson  <mwolson@gnu.org>
+
+       * processes.texi (Transaction Queues): Remove stray quote
+       character.
+
 2006-08-25  Richard Stallman  <rms@gnu.org>
 
        * os.texi (Idle Timers): run-with-idle-timer allows Lisp time value.
index a6f43cfa95d00ef651183d0f93c60f944576eb2c..f957ebcac4bded09e38ef4df7ceacace49a95c8e 100644 (file)
@@ -1520,7 +1520,7 @@ text at the end of the entire answer, but nothing before; that's how
 
 If the argument @var{delay-question} is non-nil, delay sending this
 question until the process has finished replying to any previous
-questions.  This produces more reliable results with some processes."
+questions.  This produces more reliable results with some processes.
 
 The return value of @code{tq-enqueue} itself is not meaningful.
 @end defun