X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fnnbabyl.el;h=2df307018ab77f88f26c85a38cad151f490af06f;hb=740e202473330b9de91f12a7924fb5e88512abb6;hp=06cb9ef65e20507f15b06f249b2b6b826d81fa43;hpb=939f4e94705774341dfd4fd0fc27abc6faf0016d;p=gnus diff --git a/lisp/nnbabyl.el b/lisp/nnbabyl.el index 06cb9ef65..2df307018 100644 --- a/lisp/nnbabyl.el +++ b/lisp/nnbabyl.el @@ -57,6 +57,8 @@ (defvar nnbabyl-group-alist nil) (defvar nnbabyl-active-timestamp nil) +(defvar nnbabyl-previous-buffer-mode nil) + (defvar nnbabyl-current-server nil) @@ -68,6 +70,7 @@ (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))) @@ -139,6 +142,17 @@ (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) @@ -557,6 +571,11 @@ (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)