-(defun nnfolder-delete-mail (&optional force leave-delim)
- "Delete the message that point is in."
- (save-excursion
- (delete-region
- (save-excursion
- (nnmail-search-unix-mail-delim-backward)
- (if leave-delim (progn (forward-line 1) (point))
- (point)))
- (progn
- (forward-line 1)
- (if (nnmail-search-unix-mail-delim)
- (if (and (not (bobp)) leave-delim)
- (progn (forward-line -2) (point))
- (point))
- (point-max))))))
+(defun nnfolder-goto-article (article)
+ "Place point at the start of the headers of ARTICLE.
+ARTICLE can be an article number or a Message-ID.
+Returns t if successful, nil otherwise."
+ (let ((art-string (nnfolder-article-string article))
+ start found)
+ ;; It is likely that we are at or before the delimiter line.
+ ;; We therefore go to the end of the previous line, and start
+ ;; searching from there.
+ (beginning-of-line)
+ (unless (bobp)
+ (forward-char -1))
+ (setq start (point))
+ ;; First search forward.
+ (while (and (setq found (search-forward art-string nil t))
+ (not (nnmail-within-headers-p))))
+ ;; If unsuccessful, search backward from where we started,
+ (unless found
+ (goto-char start)
+ (while (and (setq found (search-backward art-string nil t))
+ (not (nnmail-within-headers-p)))))
+ (when found
+ (nnmail-search-unix-mail-delim-backward))))
+
+(defun nnfolder-delete-mail (&optional leave-delim)
+ "Delete the message that point is in.
+If optional argument LEAVE-DELIM is t, then mailbox delimiter is not
+deleted. Point is left where the deleted region was."
+ (delete-region
+ (save-excursion
+ (forward-line 1) ; in case point is at beginning of message already
+ (nnmail-search-unix-mail-delim-backward)
+ (if leave-delim (progn (forward-line 1) (point))
+ (point)))
+ (progn
+ (forward-line 1)
+ (if (nnmail-search-unix-mail-delim)
+ (point)
+ (point-max)))))