tm 7.19.
[elisp/tm.git] / gnus / tm-gnus3.el
1 ;;;
2 ;;; tm-gnus3.el --- tm-gnus module for GNUS 3.*
3 ;;;
4
5 (require 'tl-list)
6 (require 'tl-str)
7 (require 'tl-misc)
8 (require 'tm-ognus)
9
10
11 ;;; @ version
12 ;;;
13
14 (defconst tm-gnus/RCS-ID
15   "$Id: tm-gnus3.el,v 7.0 1995/10/22 12:02:04 morioka Exp $")
16
17 (defconst tm-gnus/version
18   (concat (get-version-string tm-gnus/RCS-ID) " for GNUS 3"))
19
20
21 ;;; @ for tm-view
22 ;;;
23
24 (autoload 'mime/viewer-mode "tm-view" "View MIME message." t)
25
26 (defun tm-gnus/view-message (arg)
27   "MIME decode and play this message."
28   (interactive "P")
29   (let ((gnus-break-pages nil))
30     (gnus-Subject-select-article t t)
31     )
32   (pop-to-buffer gnus-Article-buffer t)
33   (mime/viewer-mode)
34   )
35
36 (call-after-loaded
37  'tm-view
38  (function
39   (lambda ()
40     (set-alist 'mime-viewer/quitting-method-alist
41                'gnus-Article-mode
42                (if (string-match (regexp-quote "3.14.4") gnus-version)
43                    (function
44                     (lambda ()
45                       (mime-viewer/kill-buffer)
46                       (delete-other-windows)
47                       (gnus-Article-show-summary)
48                       ))
49                  (function
50                   (lambda ()
51                     (mime-viewer/kill-buffer)
52                     (delete-other-windows)
53                     (gnus-Article-show-subjects)
54                     ))
55                  ))
56     )))
57
58
59 ;;; @ for tm-partial
60 ;;;
61
62 (call-after-loaded
63  'tm-partial
64  (function
65   (lambda ()
66     (set-atype 'mime/content-decoding-condition
67                '((type . "message/partial")
68                  (method . mime-article/grab-message/partials)
69                  (major-mode . gnus-Article-mode)
70                  (summary-buffer-exp . gnus-Subject-buffer)
71                  ))
72     
73     (set-alist 'tm-partial/preview-article-method-alist
74                'gnus-Article-mode
75                (function
76                 (lambda ()
77                   (tm-gnus/view-message (gnus-Subject-article-number))
78                   )))
79     )))
80
81
82 ;;; @ Summary decoding
83 ;;;
84
85 (add-hook 'gnus-Select-group-hook (function tm-gnus/decode-summary-subjects))
86
87
88 ;;; @ set up
89 ;;;
90
91 (define-key gnus-Subject-mode-map "\et" 'tm-gnus/toggle-decoding-mode)
92 (define-key gnus-Subject-mode-map "v" 'tm-gnus/view-message)
93
94 (fset 'gnus-summary-select-article 'gnus-Subject-select-article)
95
96 (fset 'gnus-Article-set-mode-line 'tm-gnus/article-set-mode-line)
97
98 (defun tm-gnus/decode-encoded-word-if-you-need ()
99   (if (and tm-gnus/decoding-mode
100            (cond ((boundp 'all-headers) (not all-headers))
101                  (t                     t))
102            )
103       (mime/decode-message-header)
104     ))
105
106 (add-hook 'gnus-Article-prepare-hook
107           (function tm-gnus/decode-encoded-word-if-you-need) t)
108
109 (if (not (string-match "^GNUS 3\.14\.4" gnus-version))
110     (progn
111       (add-hook 'gnus-Article-mode-hook
112                 (function
113                  (lambda ()
114                    (make-local-variable 'minor-mode-alist)
115                    (tm-gnus/add-decoding-mode-to-mode-line)
116                    )))
117       )
118   (progn
119     (add-hook 'gnus-Article-mode-hook
120               (function tm-gnus/add-decoding-mode-to-mode-line))
121     ))
122
123
124 ;;; @ end
125 ;;;
126
127 (provide 'tm-gnus3)