tm4.7.0.
[elisp/tm.git] / tm-gnus3.el
1 ;;;
2 ;;; $Id: tm-gnus3.el,v 2.0 1994/07/24 08:33:00 morioka Exp morioka $
3 ;;;
4
5 (provide 'tm-gnus3)
6
7 (require 'tm-gnus)
8
9 (if (and (null gnus-Startup-hook)
10          (boundp 'gnus-startup-hook))
11     (setq gnus-Startup-hook gnus-startup-hook)
12   )
13 (if (and (null gnus-Select-group-hook)
14          (boundp 'gnus-select-group-hook))
15     (setq gnus-Select-group-hook gnus-select-group-hook)
16   )
17 (if (and (null gnus-Subject-mode-hook)
18          (boundp 'gnus-summary-mode-hook))
19     (setq gnus-Subject-mode-hook gnus-summary-mode-hook)
20   )
21 (if (and (null gnus-Article-mode-hook)
22          (boundp 'gnus-article-mode-hook))
23     (setq gnus-Article-mode-hook gnus-article-mode-hook)
24   )
25 (if (and (null gnus-Article-prepare-hook)
26          (boundp 'gnus-article-prepare-hook))
27     (setq gnus-Article-prepare-hook gnus-article-prepare-hook)
28   )
29
30 (defun tm-gnus/full-decode-message-old (arg)
31   "MIME full-decode this article."
32   (interactive "P")
33   (let ((gnus-Article-prepare-hook mime/body-decoding-method))
34     ;; The following is a trick
35     ;; to force to read the current article again.
36     (setq gnus-have-all-headers (not gnus-have-all-headers))
37     (gnus-summary-select-article (not gnus-have-all-headers) t)
38     ))
39
40 (add-hook 'gnus-Select-group-hook
41           (function
42            (lambda ()
43              (mapcar (function
44                       (lambda (header)
45                         (nntp-set-header-subject
46                          header
47                          (mime/decode-string (gnus-header-subject header))
48                          )))
49                      gnus-newsgroup-headers)
50              )))
51
52 (define-key gnus-Subject-mode-map
53   "\et" 'tm-gnus/toggle-mime-header-decoding-mode)
54 (define-key gnus-Subject-mode-map "v" 'tm-gnus/play-message)
55 (define-key gnus-Subject-mode-map "e" 'tm-gnus/extract-message)
56 (define-key gnus-Subject-mode-map "\C-cp" 'tm-gnus/print-message)
57
58 (fset 'gnus-summary-select-article 'gnus-Subject-select-article)
59
60 (fset 'gnus-Article-set-mode-line 'tm-gnus/article-set-mode-line)
61 (add-hook 'gnus-Article-prepare-hook
62           (function
63            (lambda ()
64              (if mime/header-decoding-mode
65                  (mime/decode-message-header)
66                ))) t)
67
68 (if (not (string-match "^GNUS 3\.14\.4" gnus-version))
69     (progn
70       (add-hook 'gnus-Article-mode-hook
71                 (function
72                  (lambda ()
73                    (make-local-variable 'minor-mode-alist)
74                    (mime/add-header-decoding-mode-to-mode-line)
75                    )))
76       
77       (fset 'tm-gnus/full-decode-message 'tm-gnus/full-decode-message-old)
78       )
79   (progn
80     (add-hook 'gnus-Article-mode-hook
81               (function mime/add-header-decoding-mode-to-mode-line))
82     
83     (fset 'tm-gnus/full-decode-message 'tm-gnus/full-decode-message-new)
84     (setq gnus-show-mime-method mime/body-decoding-method)
85     ))