Function: gnus-async-wait-for-article

gnus-async-wait-for-article is a byte-compiled function defined in gnus-async.el.gz.

Signature

(gnus-async-wait-for-article ARTICLE)

Documentation

Wait until ARTICLE is no longer the currently-being-fetched article.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-async.el.gz
(defun gnus-async-wait-for-article (article)
  "Wait until ARTICLE is no longer the currently-being-fetched article."
  (save-excursion
    (gnus-async-set-buffer)
    (let ((proc (nntp-find-connection (current-buffer)))
	  (nntp-server-buffer (current-buffer))
	  (nntp-have-messaged nil)
	  (tries 0))
      (when proc
	(condition-case nil
	    ;; FIXME: we could stop waiting after some
	    ;; timeout, but this is the wrong place to do it.
	    ;; rather than checking time-spent-waiting, we
	    ;; should check time-since-last-output, which
	    ;; needs to be done in nntp.el.
	    (while (eq article gnus-async-current-prefetch-article)
	      (cl-incf tries)
	      (when (nntp-accept-process-output proc)
		(setq tries 0))
	      (when (and (not nntp-have-messaged)
			 (= tries 3))
		(gnus-message 5 "Waiting for async article...")
		(setq nntp-have-messaged t)))
	  (quit
	   ;; if the user interrupted on a slow/hung connection,
	   ;; do something friendly.
	   (when (> tries 3)
	     (setq gnus-async-current-prefetch-article nil))
	   (signal 'quit nil)))
	(when nntp-have-messaged
	  (gnus-message 5 ""))))))