tm 5.0.
[elisp/tm.git] / tm-gnus3.el
1 ;;;
2 ;;; $Id: tm-gnus3.el,v 5.0 1994/09/25 21:27:38 morioka Exp $
3 ;;;
4
5 (provide 'tm-gnus3)
6
7 (require 'tm-gnus)
8 (require 'tm-view)
9 (require 'tl-list)
10
11 (if (and (null gnus-Startup-hook)
12          (boundp 'gnus-startup-hook))
13     (setq gnus-Startup-hook gnus-startup-hook)
14   )
15 (if (and (null gnus-Select-group-hook)
16          (boundp 'gnus-select-group-hook))
17     (setq gnus-Select-group-hook gnus-select-group-hook)
18   )
19 (if (and (null gnus-Subject-mode-hook)
20          (boundp 'gnus-summary-mode-hook))
21     (setq gnus-Subject-mode-hook gnus-summary-mode-hook)
22   )
23 (if (and (null gnus-Article-mode-hook)
24          (boundp 'gnus-article-mode-hook))
25     (setq gnus-Article-mode-hook gnus-article-mode-hook)
26   )
27 (if (and (null gnus-Article-prepare-hook)
28          (boundp 'gnus-article-prepare-hook))
29     (setq gnus-Article-prepare-hook gnus-article-prepare-hook)
30   )
31
32 (setq mime/go-to-top-node-method-alist
33       (put-alist 'gnus-Article-mode
34                  (if (string-match (regexp-quote "3.14.4") gnus-version)
35                      (function
36                       (lambda ()
37                         (gnus-Article-show-summary)
38                         ))
39                    (function
40                     (lambda ()
41                       (gnus-Article-show-subjects)
42                       )))
43                  mime/go-to-top-node-method-alist))
44
45 (defun tm-gnus/view-message (arg)
46   "MIME decode and play this message."
47   (interactive "P")
48   (let ((gnus-break-pages nil))
49     (gnus-Subject-select-article t t)
50     )
51   (pop-to-buffer gnus-Article-buffer t)
52   (mime/viewer-mode)
53   )
54
55 (add-hook 'gnus-Select-group-hook
56           (function
57            (lambda ()
58              (mapcar (function
59                       (lambda (header)
60                         (nntp-set-header-subject
61                          header
62                          (mime/decode-string (gnus-header-subject header))
63                          )))
64                      gnus-newsgroup-headers)
65              )))
66
67 (define-key gnus-Subject-mode-map
68   "\et" 'tm-gnus/toggle-mime-header-decoding-mode)
69 (define-key gnus-Subject-mode-map "v" 'tm-gnus/view-message)
70
71 (fset 'gnus-summary-select-article 'gnus-Subject-select-article)
72
73 (fset 'gnus-Article-set-mode-line 'tm-gnus/article-set-mode-line)
74 (add-hook 'gnus-Article-prepare-hook
75           (function
76            (lambda ()
77              (if mime/header-decoding-mode
78                  (mime/decode-message-header)
79                ))) t)
80
81 (if (not (string-match "^GNUS 3\.14\.4" gnus-version))
82     (progn
83       (add-hook 'gnus-Article-mode-hook
84                 (function
85                  (lambda ()
86                    (make-local-variable 'minor-mode-alist)
87                    (mime/add-header-decoding-mode-to-mode-line)
88                    )))
89       )
90   (progn
91     (add-hook 'gnus-Article-mode-hook
92               (function mime/add-header-decoding-mode-to-mode-line))
93     ))