Function: doc-view-search-internal

doc-view-search-internal is a byte-compiled function defined in doc-view.el.gz.

Signature

(doc-view-search-internal REGEXP FILE)

Documentation

Return a list of FILE's pages that contain text matching REGEXP.

The value is an alist of the form (PAGE CONTEXTS) where PAGE is the pagenumber and CONTEXTS are all lines of text containing a match.

Source Code

;; Defined in /usr/src/emacs/lisp/doc-view.el.gz
;;;; Searching


(defun doc-view-search-internal (regexp file)
  "Return a list of FILE's pages that contain text matching REGEXP.
The value is an alist of the form (PAGE CONTEXTS) where PAGE is
the pagenumber and CONTEXTS are all lines of text containing a match."
  (with-temp-buffer
    (insert-file-contents file)
    (let ((page 1)
	  (lastpage 1)
	  matches)
      (while (re-search-forward (concat "\\(?:\\([]\\)\\|\\("
					regexp "\\)\\)") nil t)
	(when (match-string 1) (setq page (1+ page)))
	(when (match-string 2)
	  (if (/= page lastpage)
	      (push (cons page
			  (list (buffer-substring
				 (line-beginning-position)
				 (line-end-position))))
		    matches)
	    (setq matches (cons
			   (append
			    (or
			     ;; This page already is a match.
			     (car matches)
			     ;; This is the first match on page.
			     (list page))
			    (list (buffer-substring
				   (line-beginning-position)
				   (line-end-position))))
			   (cdr matches))))
	  (setq lastpage page)))
      (nreverse matches))))