Function: nnfolder-save-mail

nnfolder-save-mail is a byte-compiled function defined in nnfolder.el.gz.

Signature

(nnfolder-save-mail GROUP-ART-LIST)

Documentation

Called narrowed to an article.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnfolder.el.gz
(defun nnfolder-save-mail (group-art-list)
  "Called narrowed to an article."
  (let* (save-list group-art)
    (goto-char (point-min))
    ;; The From line may have been quoted by movemail.
    (when (looking-at ">From")
      (delete-char 1))
    ;; This might come from somewhere else.
    (unless (looking-at "From ")
      (insert "From nobody " (current-time-string) "\n")
      (goto-char (point-min)))
    ;; Quote all "From " lines in the article.
    (forward-line 1)
    (let (case-fold-search)
      (while (re-search-forward "^From " nil t)
	(beginning-of-line)
	(insert "> ")))
    (setq save-list group-art-list)
    (nnmail-insert-lines)
    (nnmail-insert-xref group-art-list)
    (run-hooks 'nnmail-prepare-save-mail-hook)
    (run-hooks 'nnfolder-prepare-save-mail-hook)

    ;; Insert the mail into each of the destination groups.
    (while (setq group-art (pop group-art-list))
      ;; Kill any previous newsgroup markers.
      (goto-char (point-min))
      (if (search-forward "\n\n" nil t)
	  (forward-line -1)
	(goto-char (point-max)))
      (while (search-backward (concat "\n" nnfolder-article-marker) nil t)
	(delete-region (1+ (point)) (progn (forward-line 2) (point))))

      ;; Insert the new newsgroup marker.
      (nnfolder-insert-newsgroup-line group-art)

      (save-excursion
	(let ((beg (point-min))
	      (end (point-max))
	      (obuf (current-buffer)))
	  (nnfolder-possibly-change-folder (car group-art))
	  (let ((buffer-read-only nil))
	    (nnfolder-normalize-buffer)
	    (insert-buffer-substring obuf beg end))
	  (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
	    (set-buffer obuf)
	    (nnfolder-add-nov (car group-art) (cdr group-art)
			      (nnfolder-parse-head nil beg end))))))

    ;; Did we save it anywhere?
    save-list))