;;; @ version
;;;
(defconst tm-gnus/RCS-ID
- "$Id: tm-dgnus.el,v 6.9 1995/07/03 07:50:58 morioka Exp $")
+ "$Id: tm-dgnus.el,v 6.14 1995/08/01 17:19:15 morioka Exp $")
(defconst tm-gnus/version
(concat (get-version-string tm-gnus/RCS-ID) " (ding)"))
+(defconst tm-gnus/automatic-MIME-preview-support
+ (if (boundp 'gnus-clean-article-buffer)
+ (progn
+ (defconst gnus-version (concat gnus-version " with tm patch"))
+ t)))
+
+(defvar tm-gnus/preview-buffer
+ (if tm-gnus/automatic-MIME-preview-support
+ (concat "*Preview-" gnus-clean-article-buffer "*"))
+ )
+
;;; @ autoload
;;;
(defvar tm-gnus/original-article-display-hook gnus-article-display-hook)
-(defvar tm-gnus/decode-all t)
-
-(defvar tm-gnus/preview-buffer (concat "*Preview-" gnus-article-buffer "*"))
+(defvar tm-gnus/decode-all tm-gnus/automatic-MIME-preview-support
+ "If it is non-nil and
+tm-gnus/automatic-MIME-preview-support is non-nil,
+article is automatic MIME decoded.")
;;; @ command functions
(let ((gnus-break-pages nil))
(gnus-summary-select-article t t)
)
- (pop-to-buffer gnus-article-buffer t)
+ (pop-to-buffer gnus-clean-article-buffer t)
(let (buffer-read-only)
(if (text-property-any (point-min) (point-max) 'invisible t)
(remove-text-properties (point-min) (point-max)
(define-key gnus-summary-mode-map "v" (function tm-gnus/view-message))
(define-key gnus-summary-mode-map
"\e\r" (function tm-gnus/summary-scroll-down))
-(define-key gnus-summary-mode-map "\et" (function tm-gnus/toggle-mime))
-
-(defmacro gnus-get-article-buffer ()
- (` (cdr (assq 'article gnus-window-to-buffer))))
-
-;; Set article window start at LINE, where LINE is the number of lines
-;; from the head of the article.
-(defun gnus-article-set-window-start (&optional line)
- (let ((article-buffer (gnus-get-article-buffer)))
- (set-window-start
- (get-buffer-window article-buffer)
- (save-excursion
- (set-buffer article-buffer)
- (goto-char (point-min))
- (if (not line)
- (point-min)
- (gnus-message 6 "Moved to bookmark")
- (search-forward "\n\n" nil t)
- (forward-line line)
- (point))))))
-
-(defun gnus-summary-next-page (lines)
- "Show next page of selected article.
-If end of article, select next article.
-Argument LINES specifies lines to be scrolled up."
- (interactive "P")
- (let ((article (gnus-summary-article-number))
- (endp nil))
- (if (or (null gnus-current-article)
- (/= article gnus-current-article))
- ;; Selected subject is different from current article's.
- (gnus-summary-display-article article)
- (gnus-configure-windows 'article)
- (pop-to-buffer gnus-summary-buffer)
- (gnus-eval-in-buffer-window
- (gnus-get-article-buffer)
- (setq endp (gnus-article-next-page lines)))
- (cond ((and endp lines)
- (message "End of message"))
- ((and endp (null lines))
- (gnus-summary-next-unread-article)))
- )))
-
-(defun gnus-summary-prev-page (lines)
- "Show previous page of selected article.
-Argument LINES specifies lines to be scrolled down."
- (interactive "P")
- (gnus-set-global-variables)
- (let ((article (gnus-summary-article-number)))
- (gnus-configure-windows 'article)
- (if (or (null gnus-current-article)
- (null gnus-article-current)
- (/= article (cdr gnus-article-current))
- (not (equal (car gnus-article-current) gnus-newsgroup-name)))
- ;; Selected subject is different from current article's.
- (gnus-summary-display-article article)
- (gnus-summary-recenter)
- (gnus-eval-in-buffer-window
- (gnus-get-article-buffer)
- (gnus-article-prev-page lines))))
- (gnus-summary-position-cursor))
-
-(defun gnus-summary-scroll-up (lines)
- "Scroll up (or down) one line current article.
-Argument LINES specifies lines to be scrolled up (or down if negative)."
- (interactive "p")
- (gnus-set-global-variables)
- (gnus-configure-windows 'article)
- (or (gnus-summary-select-article nil nil 'pseudo)
- (gnus-eval-in-buffer-window
- (gnus-get-article-buffer)
- (cond ((> lines 0)
- (if (gnus-article-next-page lines)
- (gnus-message 3 "End of message")))
- ((< lines 0)
- (gnus-article-prev-page (- lines))))))
- (gnus-summary-recenter)
- (gnus-summary-position-cursor))
-
-(defun gnus-summary-toggle-header (arg)
- "Show the headers if they are hidden, or hide them if they are shown.
-If ARG is a positive number, show the entire header.
-If ARG is a negative number, hide the unwanted header lines."
- (interactive "P")
- (gnus-set-global-variables)
- (save-excursion
- (set-buffer (gnus-get-article-buffer))
- (let ((buffer-read-only nil))
- (if (numberp arg)
- (if (> arg 0) (remove-text-properties (point-min) (point-max)
- gnus-hidden-properties)
- (if (< arg 0) (run-hooks 'gnus-article-display-hook)))
- (if (text-property-any (point-min) (point-max) 'invisible t)
- (if tm-gnus/decode-all
- (let (mime-viewer/ignored-field-list)
- (run-hooks 'gnus-article-display-hook)
- )
- (remove-text-properties (point-min) (point-max)
- gnus-hidden-properties)
- )
- (let (gnus-have-all-headers)
- (run-hooks 'gnus-article-display-hook)
- ))
- )
- (pop-to-buffer gnus-summary-buffer)
- (set-window-point (get-buffer-window (current-buffer)) (point-min)))))
;;; @ summary filter
(mime/decode-message-header)
))))
+
+;;; @ automatic MIME preview support
+;;;
+
+(defun tm-gnus/summary-toggle-header (&optional arg)
+ (interactive "P")
+ (if tm-gnus/decode-all
+ (let ((mime-viewer/ignored-field-list
+ (if (save-window-excursion
+ (switch-to-buffer tm-gnus/preview-buffer)
+ (goto-char (point-min))
+ (message/get-field-body
+ (car mime-viewer/ignored-field-list)
+ ))
+ mime-viewer/ignored-field-list)
+ ))
+ (gnus-summary-select-article t t)
+ )
+ (gnus-summary-toggle-header arg)
+ ))
+
(defun tm-gnus/set-mime-method (mode)
(if mode
(progn
(list (function (lambda ()
(mime/viewer-mode)
(gnus-set-mode-line 'article)
- (set-buffer-modified-p nil)
- (pop-to-buffer mime::preview/article-buffer)
))))
(set-alist 'gnus-window-to-buffer 'article tm-gnus/preview-buffer)
+ (setq gnus-article-buffer tm-gnus/preview-buffer)
)
(setq gnus-show-mime t)
(setq gnus-article-display-hook tm-gnus/original-article-display-hook)
- (set-alist 'gnus-window-to-buffer 'article gnus-article-buffer)
+ (set-alist 'gnus-window-to-buffer 'article gnus-clean-article-buffer)
+ (setq gnus-article-buffer gnus-clean-article-buffer)
))
-(tm-gnus/set-mime-method tm-gnus/decode-all)
-
(defun tm-gnus/toggle-mime (arg)
"Toggle MIME processing mode.
With arg, turn MIME processing on if arg is positive."
(gnus-summary-select-article gnus-show-all-headers 'force)
)
-
-;;; @ etc
-;;;
-
-(add-hook 'gnus-exit-gnus-hook
- (function
- (lambda ()
- (let ((buf (get-buffer tm-gnus/preview-buffer)))
- (if buf
- (kill-buffer buf)
- )))))
+(if tm-gnus/automatic-MIME-preview-support
+ (progn
+ (define-key gnus-summary-mode-map
+ "t" (function tm-gnus/summary-toggle-header))
+ (define-key gnus-summary-mode-map "\et" (function tm-gnus/toggle-mime))
+
+ (tm-gnus/set-mime-method tm-gnus/decode-all)
+
+ (add-hook 'gnus-exit-gnus-hook
+ (function
+ (lambda ()
+ (let ((buf (get-buffer tm-gnus/preview-buffer)))
+ (if buf
+ (kill-buffer buf)
+ )))))
+ )
+ (setq gnus-article-display-hook tm-gnus/original-article-display-hook)
+ (setq gnus-show-mime t)
+ )
;;; @ end