Function: nnweb-gmane-create-mapping

nnweb-gmane-create-mapping is a byte-compiled function defined in nnweb.el.gz.

Signature

(nnweb-gmane-create-mapping)

Documentation

Perform the search and create a number-to-url alist.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnweb.el.gz
;;;
;;; gmane.org
;;;
(defun nnweb-gmane-create-mapping ()
  "Perform the search and create a number-to-url alist."
  (with-current-buffer nnweb-buffer
    (let ((case-fold-search t)
	  (active (or (cadr (assoc nnweb-group nnweb-group-alist))
		      (cons 1 0)))
	  map)
      (erase-buffer)
      (nnheader-message 7 "Searching Gmane..." )
      (when (funcall (nnweb-definition 'search) nnweb-search)
	(goto-char (point-min))
	;; Skip the status line
	(forward-line 1)
	;; Thanks to Olly Betts we now have NOV lines in our buffer!
	(while (not (eobp))
	  (unless (or (eolp) (looking-at "\x0d"))
	    (let ((header (nnheader-parse-nov)))
	      (let ((xref (mail-header-xref header))
		    (from (mail-header-from header))
		    (subject (mail-header-subject header))
		    (rfc2047-encoding-type 'mime))
		(when (string-match " \\([^:]+\\)[:/]\\([0-9]+\\)" xref)
		  (setf (mail-header-xref header)
                        (format "http://article.gmane.org/%s/%s/raw"
                                (match-string 1 xref)
                                (match-string 2 xref))))

		;; Add host part to gmane-encrypted addresses
		(when (string-match "@$" from)
		  (setf (mail-header-from header)
			(concat from "public.gmane.org")))

		(setf (mail-header-subject header)
		      (rfc2047-encode-string subject))

		(unless (nnweb-get-hashtb (mail-header-xref header))
		  (setf (mail-header-number header) (cl-incf (cdr active)))
		  (push (list (mail-header-number header) header) map)
		  (nnweb-set-hashtb (cadar map) (car map))))))
	  (forward-line 1)))
      (nnheader-message 7 "Searching Gmane...done")
      (setq nnweb-articles
	    (sort (nconc nnweb-articles map) #'car-less-than-car)))))