Function: gnus-summary-search-article
gnus-summary-search-article is a byte-compiled function defined in
gnus-sum.el.gz.
Signature
(gnus-summary-search-article REGEXP &optional BACKWARD)
Documentation
Search for an article containing REGEXP.
Optional argument BACKWARD means do search for backward.
gnus-select-article-hook is not called during the search.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
(defun gnus-summary-search-article (regexp &optional backward)
"Search for an article containing REGEXP.
Optional argument BACKWARD means do search for backward.
`gnus-select-article-hook' is not called during the search."
;; We have to require this here to make sure that the following
;; dynamic binding isn't shadowed by autoloading.
(require 'gnus-async)
(require 'gnus-art)
(let ((gnus-select-article-hook nil) ;Disable hook.
(gnus-article-prepare-hook nil)
(gnus-mark-article-hook nil) ;Inhibit marking as read.
(gnus-use-article-prefetch nil)
(gnus-use-trees nil) ;Inhibit updating tree buffer.
(gnus-visual nil)
(gnus-keep-backlog nil)
(gnus-break-pages nil)
(gnus-summary-display-arrow nil)
(gnus-updated-mode-lines nil)
(gnus-auto-center-summary nil)
(sum (current-buffer))
(gnus-display-mime-function nil)
(found nil)
point)
(gnus-save-hidden-threads
(gnus-summary-select-article)
(set-buffer gnus-article-buffer)
(goto-char (window-point (get-buffer-window (current-buffer))))
(when backward
(forward-line -1))
(while (not found)
(gnus-message 7 "Searching article: %d..." (cdr gnus-article-current))
(if (if backward
(re-search-backward regexp nil t)
(re-search-forward regexp nil t))
;; We found the regexp.
(progn
(setq found 'found)
(beginning-of-line)
(set-window-start
(get-buffer-window (current-buffer))
(point))
(forward-line 1)
(set-window-point
(get-buffer-window (current-buffer))
(point))
(set-buffer sum)
(setq point (point)))
;; We didn't find it, so we go to the next article.
(set-buffer sum)
(setq found 'not)
(while (eq found 'not)
(if (not (if backward (gnus-summary-find-prev)
(gnus-summary-find-next)))
;; No more articles.
(setq found t)
;; Select the next article and adjust point.
(unless (gnus-summary-article-sparse-p
(gnus-summary-article-number))
(setq found nil)
(gnus-summary-select-article)
(set-buffer gnus-article-buffer)
(widen)
(goto-char (if backward (point-max) (point-min))))))))
(gnus-message 7 ""))
;; Return whether we found the regexp.
(when (eq found 'found)
(goto-char point)
(sit-for 0) ;; Ensure that the point is visible in the summary window.
(gnus-summary-show-thread)
(gnus-summary-goto-subject gnus-current-article)
(gnus-summary-position-point)
t)))