Download
(defvar procmaillog-file "~/.procmaillog")
(defun nndoc-procmaillog-type-p ()
(equal (expand-file-name procmaillog-file) nndoc-address))
(defun nndoc-procmaillog-article-transform (article)
(delete-region (point-min) (point-max))
(nndoc-procmaillog-generate-head article)
(insert "\n" (concat (gnus-fetch-field "folder"))))
(defun nndoc-procmaillog-generate-head (article)
(let ((entry (cdr (assq article nndoc-dissection-alist)))
subject from date folder number)
(save-excursion
(set-buffer nndoc-current-buffer)
(save-restriction
(narrow-to-region (car entry) (nth 3 entry))
(goto-char (point-min))
(when
(re-search-forward
"^from \\(\\S-*\\) \\s-*\\(.*\\)")
(setq from (match-string 1))
(setq date (match-string 2)))
(when (re-search-forward
"^\\s-*Subject: \\(.*\\)" nil t)
(setq subject (match-string 1)))
(when (re-search-forward
"^\\s-*folder: \\(\\S-*\\)\\s-+\\(.*\\)")
(setq folder (match-string 1))
(setq number (match-string 2)))))
(insert "From: " (or from "(nobody)")
"\nSubject: " (or subject "(no subject)")
(if date (concat "\nDate: " date) "")
"\nX-Procmail-Folder: " folder
"\nX-Procmail-Number: " number
"\n")))
(nndoc-add-type
`(procmaillog
(article-begin . "^From")
(article-transform-function . nndoc-procmaillog-article-transform)
(generate-head-function . nndoc-procmaillog-generate-head)
)
'first)
(defvar procmaillog-summary-line-format
"%U%R%z%I%(%[%4L: %-23,23f%]%) %-12u&procmail-folder; %s\n"
)
(defun gnus-user-format-function-procmail-folder (header)
(let* ((folder (cdr (assq 'X-Procmail-Folder
(mail-header-extra header)))))
(cond ((null folder)
(setq folder ""))
((string= folder "/dev/null")
(set-text-properties 0 (length folder) '(face gnus-face-1) folder))
((string-match "spam" folder)
(set-text-properties 0 (length folder) '(face gnus-face-4) folder)))
folder))
(add-hook 'gnus-started-hook
(lambda ()
(add-to-list 'gnus-extra-headers 'X-Procmail-Folder)))
(add-to-list 'gnus-parameters
'("^nndoc.*\\.procmaillog$"
(gnus-summary-line-format procmaillog-summary-line-format)
(gnus-summary-highlight nil)))
(provide 'procmaillog)