;;; tm-dgnus.el --- tm-gnus module for (ding) GNUS
;;;
+(require 'tm-gnus5)
+
+
;;; @ version
;;;
+
(defconst tm-gnus/RCS-ID
- "$Id: tm-dgnus.el,v 6.5 1995/06/22 05:34:56 morioka Exp $")
+ "$Id: tm-dgnus.el,v 6.18 1995/08/31 20:15:50 morioka Exp $")
(defconst tm-gnus/version
(concat (get-version-string tm-gnus/RCS-ID) " (ding)"))
-
-;;; @ autoload
-;;;
-
-(autoload 'mime/viewer-mode "tm-view" "View MIME message." t)
-(autoload 'mime/decode-message-header
- "tiny-mime" "Decode MIME encoded-word." t)
-(autoload 'mime/decode-string "tiny-mime" "Decode MIME encoded-word." t)
-
-
-;;; @ variables
-;;;
-
-(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 "*"))
-
-
-;;; @ command functions
-;;;
-
-(defun tm-gnus/view-message (arg)
- "MIME decode and play this message."
- (interactive "P")
- (let ((gnus-break-pages nil))
- (gnus-summary-select-article t t)
- )
- (pop-to-buffer gnus-article-buffer t)
- (mime/viewer-mode)
- )
-
-(defun tm-gnus/summary-scroll-down ()
- "Scroll down one line current article."
- (interactive)
- (gnus-summary-scroll-up -1)
- )
-
-(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))
-
-
-(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 (cdr (assq 'article gnus-window-to-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-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
- (cdr (assq 'article gnus-window-to-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-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
- (cdr (assq 'article gnus-window-to-buffer))
- (gnus-article-prev-page lines))))
- (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 (cdr (assq 'article gnus-window-to-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)))))
-
-
-;; 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 (cdr (assq 'article gnus-window-to-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))))))
-
-
-;;; @ summary filter
-;;;
-
-(defun tm-gnus/decode-summary-from-and-subjects ()
- (mapcar (function
- (lambda (header)
- (header-set-from
- header
- (mime/decode-string (or (header-from header) ""))
- )
- (header-set-subject
- header
- (mime/decode-string (or (header-subject header) ""))
- )
- ))
- gnus-newsgroup-headers)
- )
-
-(add-hook 'gnus-select-group-hook
- (function tm-gnus/decode-summary-from-and-subjects))
-
-
-;;; @ article filter
-;;;
-
-(setq gnus-show-mime-method
- (function
- (lambda ()
- (let (buffer-read-only)
- (mime/decode-message-header)
- ))))
-
-(defun tm-gnus/set-mime-method (mode)
- (if mode
- (progn
- (setq gnus-show-mime nil)
- (setq gnus-article-display-hook
- (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-show-mime t)
- (setq gnus-article-display-hook tm-gnus/original-article-display-hook)
- (set-alist 'gnus-window-to-buffer 'article gnus-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."
- (interactive "P")
- (setq tm-gnus/decode-all
- (if (null arg)
- (not tm-gnus/decode-all)
- arg))
- (gnus-set-global-variables)
- (tm-gnus/set-mime-method tm-gnus/decode-all)
- (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 (not (fboundp 'mail-header-from))
+ (progn
+ (defalias 'mail-header-from 'header-from)
+ (defalias 'mail-header-set-from 'header-set-from)
+ (defalias 'mail-header-subject 'header-subject)
+ (defalias 'mail-header-set-subject 'header-set-subject)
+ ))
;;; @ end