Mercurial > emacs
changeset 72548:e5542d6aad7f
Miscellaneous tq-related fixes.
* 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>
author | Miles Bader <miles@gnu.org> |
---|---|
date | Sun, 27 Aug 2006 10:42:40 +0000 |
parents | 98899ee69177 |
children | 3882e4292e7a 694bbb62a75d |
files | lisp/ChangeLog lisp/emacs-lisp/tq.el lispref/ChangeLog lispref/processes.texi |
diffstat | 4 files changed, 46 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Aug 27 07:10:26 2006 +0000 +++ b/lisp/ChangeLog Sun Aug 27 10:42:40 2006 +0000 @@ -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.
--- a/lisp/emacs-lisp/tq.el Sun Aug 27 07:10:26 2006 +0000 +++ b/lisp/emacs-lisp/tq.el Sun Aug 27 10:42:40 2006 +0000 @@ -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 @@ 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 @@ (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)
--- a/lispref/ChangeLog Sun Aug 27 07:10:26 2006 +0000 +++ b/lispref/ChangeLog Sun Aug 27 10:42:40 2006 +0000 @@ -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.
--- a/lispref/processes.texi Sun Aug 27 07:10:26 2006 +0000 +++ b/lispref/processes.texi Sun Aug 27 10:42:40 2006 +0000 @@ -1520,7 +1520,7 @@ 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