(defvar nnbabyl-group-alist nil)
(defvar nnbabyl-active-timestamp nil)
+(defvar nnbabyl-previous-buffer-mode nil)
+
\f
(defvar nnbabyl-current-server nil)
(list 'nnbabyl-get-new-mail nnbabyl-get-new-mail)
'(nnbabyl-current-group nil)
'(nnbabyl-status-string "")
+ '(nnbabyl-previous-buffer-mode nil)
'(nnbabyl-group-alist nil)))
\f
(setq nnbabyl-current-server server)))
(defun nnbabyl-close-server (&optional server)
+ ;; Restore buffer mode.
+ (when (and (nnbabyl-server-opened)
+ nnbabyl-previous-buffer-mode)
+ (save-excursion
+ (set-buffer nnbabyl-mbox-buffer)
+ (narrow-to-region
+ (car (car nnbabyl-previous-buffer-mode))
+ (cdr (car nnbabyl-previous-buffer-mode)))
+ (funcall (cdr nnbabyl-previous-buffer-mode))))
+ (setq nnbabyl-current-server nil
+ nnbabyl-mbox-buffer nil)
t)
(defun nnbabyl-server-opened (&optional server)
(set-buffer nnbabyl-mbox-buffer)
(goto-char (point-min))
(if (search-forward (nnbabyl-article-string article) nil t)
- (let (start stop)
+ (let (start stop summary-line)
(re-search-backward (concat "^" nnbabyl-mail-delimiter) nil t)
(while (and (not (looking-at ".+:"))
(zerop (forward-line 1))))
(erase-buffer)
(insert-buffer-substring nnbabyl-mbox-buffer start stop)
(goto-char (point-min))
- (if (search-forward "\n*** EOOH ***" nil t)
- (progn
- (delete-region (progn (beginning-of-line) (point))
- (or (search-forward "\n\n" nil t)
- (point)))))
+ ;; If there is an EOOH header, then we have to remove some
+ ;; duplicated headers.
+ (setq summary-line (looking-at "Summary-line:"))
+ (when (search-forward "\n*** EOOH ***" nil t)
+ (if summary-line
+ ;; The headers to be deleted are located before the
+ ;; EOOH line...
+ (delete-region (point-min) (progn (forward-line 1)
+ (point)))
+ ;; ...or after.
+ (delete-region (progn (beginning-of-line) (point))
+ (or (search-forward "\n\n" nil t)
+ (point)))))
(if (numberp article)
(cons nnbabyl-current-group article)
(nnbabyl-article-group-number)))))))
(goto-char (point-max))
(search-backward "\n\^_")
(goto-char (match-end 0))
- (insert-buffer buf)
+ (insert-buffer-substring buf)
(and last (progn
(save-buffer)
(nnmail-save-active
(set-buffer (setq nnbabyl-mbox-buffer
(nnheader-find-file-noselect
nnbabyl-mbox-file nil 'raw)))
+ ;; Save buffer mode.
+ (setq nnbabyl-previous-buffer-mode
+ (cons (cons (point-min) (point-max))
+ major-mode))
+
(buffer-disable-undo (current-buffer))
(widen)
(setq buffer-read-only nil)