This commit was generated by cvs2svn to compensate for changes in r542,
[elisp/tm.git] / gnus / tm-sgnus.el
index 73cddf5..3c02ef7 100644 (file)
@@ -1,13 +1,14 @@
 ;;;
-;;; tm-sgnus.el --- tm-gnus module for September Gnus
+;;; tm-sgnus.el --- MIME extender for Gnus 5.2
 ;;;
 ;;; Copyright (C) 1995 Free Software Foundation, Inc.
 ;;; Copyright (C) 1995,1996 MORIOKA Tomohiko
 ;;;
 ;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;;;         and KOBAYASHI Shuhei <shuhei-k@jaist.ac.jp>
 ;;; Created: 1995/09/24
-;;; Version: $Revision: 7.53 $
+;;; Version: $Revision: 7.69 $
 ;;; Keywords: news, MIME, multimedia, multilingual, encoded-word
 ;;;
 ;;; This file is part of tm (Tools for MIME).
@@ -41,7 +42,7 @@
 ;;;
 
 (defconst tm-gnus/RCS-ID
-  "$Id: tm-sgnus.el,v 7.53 1996/04/25 12:07:08 morioka Exp $")
+  "$Id: tm-sgnus.el,v 7.69 1996/06/09 06:57:33 morioka Exp $")
 
 (defconst tm-gnus/version
   (concat (get-version-string tm-gnus/RCS-ID) " for September"))
@@ -113,8 +114,8 @@ This variable is set to `gnus-show-mime'.")
 (defun tm-gnus/content-header-filter ()
   (goto-char (point-min))
   (mime-preview/cut-header)
-  (tm-gnus/code-convert-region-to-emacs (point-min)(point-max)
-                                       mime/default-coding-system)
+  (mime-charset-decode-region (point-min)(point-max)
+                             mime/default-coding-system)
   (mime/decode-message-header)
   )
 
@@ -122,12 +123,9 @@ This variable is set to `gnus-show-mime'.")
           'gnus-original-article-mode
           (function tm-gnus/content-header-filter))
 
-(fset 'tm-gnus/code-convert-region-to-emacs
-      (symbol-function 'mime/code-convert-region-to-emacs))
-
 (set-alist 'mime-viewer/code-converter-alist
           'gnus-original-article-mode
-          (function tm-gnus/code-convert-region-to-emacs))
+          (function mime-charset-decode-region))
 
 (defun mime-viewer/quitting-method-for-sgnus ()
   (if (not gnus-show-mime)
@@ -139,16 +137,59 @@ This variable is set to `gnus-show-mime'.")
       (gnus-summary-select-article nil t)
     ))
 
+(set-alist 'mime-viewer/quitting-method-alist
+          'gnus-original-article-mode
+          (function mime-viewer/quitting-method-for-sgnus))
+(set-alist 'mime-viewer/show-summary-method
+          'gnus-original-article-mode
+          (function mime-viewer/quitting-method-for-sgnus))
+
+
+;;; @ for tm-edit
+;;;
+
+;; suggested by OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
+;;     1995/11/08 (c.f. [tm ML:1067])
+(defun tm-gnus/insert-article (&optional message)
+  (interactive)
+  (let ((message-cite-function 'mime-editor/inserted-message-filter)
+        (message-reply-buffer gnus-original-article-buffer)
+       )
+    (message-yank-original nil)
+    ))
+
+;;; modified by Steven L. Baur <steve@miranova.com>
+;;;    1995/12/6 (c.f. [tm-en:209])
+(defun mime-editor/attach-to-news-reply-menu ()
+  "Arrange to attach MIME editor's popup menu to VM's"
+  (if (boundp 'news-reply-menu)
+      (progn
+       (setq news-reply-menu (append news-reply-menu
+                                     '("---")
+                                     mime-editor/popup-menu-for-xemacs))
+       (remove-hook 'news-setup-hook
+                    'mime-editor/attach-to-news-reply-menu)
+       )))
+
 (call-after-loaded
- 'tm-view
- (lambda ()
-   (set-alist 'mime-viewer/quitting-method-alist
-             'gnus-original-article-mode
-             (function mime-viewer/quitting-method-for-sgnus))
-   (set-alist 'mime-viewer/show-summary-method
-             'gnus-original-article-mode
-             (function mime-viewer/quitting-method-for-sgnus))
-   ))
+ 'tm-edit
+ (function
+  (lambda ()
+    (set-alist 'mime-editor/message-inserter-alist
+              'message-mode (function tm-gnus/insert-article))
+    (if (string-match "XEmacs\\|Lucid" emacs-version)
+       (add-hook 'news-setup-hook 'mime-editor/attach-to-news-reply-menu)
+      )
+
+    (set-alist 'mime-editor/split-message-sender-alist
+              'message-mode
+              (lambda ()
+                (interactive)
+                (let (message-send-hook
+                      message-sent-message-via)
+                  (message-send)
+                  )))
+    )))
 
 
 ;;; @ for tm-partial
@@ -201,11 +242,10 @@ This variable is set to `gnus-show-mime'.")
 (setq gnus-show-mime-method (function tm-gnus/preview-article))
 
 (defun tm-gnus/article-decode-encoded-word ()
-  (code-convert-region (point-min)(point-max)
-                      (save-excursion
-                        (set-buffer gnus-summary-buffer)
-                        mime/default-coding-system)
-                      *internal*)
+  (character-decode-region (point-min)(point-max)
+                          (save-excursion
+                            (set-buffer gnus-summary-buffer)
+                            mime/default-coding-system))
   (mime/decode-message-header)
   (run-hooks 'tm-gnus/article-prepare-hook)
   )
@@ -213,49 +253,6 @@ This variable is set to `gnus-show-mime'.")
 (setq gnus-decode-encoded-word-method
       (function tm-gnus/article-decode-encoded-word))
 
-;; (if (boundp 'MULE)
-;;     (progn
-;;       (define-service-coding-system gnus-nntp-service nil *noconv*)
-;;       (if (and (boundp 'nntp-server-process)
-;;                (processp nntp-server-process)
-;;                )
-;;           (set-process-coding-system nntp-server-process *noconv* *noconv*)
-;;         )
-;;       
-;;       (or (fboundp 'tm-gnus/original-request-article)
-;;           (fset 'tm-gnus/original-request-article
-;;                 (symbol-function 'gnus-request-article))
-;;           )
-;;       
-;;       (defun gnus-request-article (article group &optional buffer)
-;;         (let ((file-coding-system-for-read *noconv*))
-;;           (tm-gnus/original-request-article article group buffer)
-;;           ))
-;;       
-;;       (defun tm-gnus/nnheader-find-file-noselect (&rest args)
-;;         (let ((file-coding-system-for-read *noconv*))
-;;           (apply (function find-file-noselect) args)
-;;           ))
-;;       (eval-after-load
-;;        "nnheader"
-;;        '(fset 'nnheader-find-file-noselect
-;;               'tm-gnus/nnheader-find-file-noselect)
-;;        )
-;;       
-;;       (defun tm-gnus/nnmail-get-new-mail (&rest args)
-;;         (let ((file-coding-system-for-read *noconv*))
-;;           (apply (function tm-gnus/original-nnmail-get-new-mail) args)
-;;           ))
-;;       (eval-after-load
-;;        "nnmail"
-;;        '(progn (or (fboundp 'tm-gnus/original-nnmail-get-new-mail)
-;;                    (fset 'tm-gnus/original-nnmail-get-new-mail
-;;                          (symbol-function 'nnmail-get-new-mail))
-;;                    )
-;;                (fset 'nnmail-get-new-mail 'tm-gnus/nnmail-get-new-mail)
-;;                ))
-;;       ))
-
 
 ;;; @ for MULE
 ;;;
@@ -269,47 +266,64 @@ This variable is set to `gnus-show-mime'.")
             cs))
 
 (cond
- ((boundp 'MULE)
-  (define-service-coding-system gnus-nntp-service nil *noconv*)
-  (if (and (boundp 'nntp-server-process)
-          (processp nntp-server-process)
+ ((featurep 'mule)
+  (cond ((boundp 'MULE)
+        (define-service-coding-system gnus-nntp-service nil *noconv*)
+        (if (and (boundp 'nntp-server-process)
+                 (processp nntp-server-process)
+                 )
+            (set-process-coding-system nntp-server-process *noconv* *noconv*)
           )
-      (set-process-coding-system nntp-server-process *noconv* *noconv*)
-    )
+        )
+       (running-xemacs-20
+        (if (and (boundp 'nntp-server-process)
+                 (processp nntp-server-process)
+                 )
+            (set-process-input-coding-system nntp-server-process 'noconv)
+          )
+        ))
   (call-after-loaded
    'nnheader
    (lambda ()
      (defun nnheader-find-file-noselect (filename &optional nowarn rawfile)
-       (let ((file-coding-system-for-read '*noconv*))
+       (let ((file-coding-system-for-read *noconv*))
         (find-file-noselect filename nowarn rawfile)
         ))
-     (defun nnheader-insert-raw-file-contents
+     (defun nnheader-insert-file-contents-literally
        (filename &optional visit beg end replace)
-       (let ((file-coding-system-for-read '*noconv*))
-        (insert-file-contents filename visit beg end replace)
+       (let ((file-coding-system-for-read *noconv*))
+        (insert-file-contents-literally filename visit beg end replace)
         ))
-     ;;(fset 'nnheader-raw-write-region 'si:write-region)
+     ))
+  ;; Please use Gnus 5.2.10 or later if you use Mule.
+  (call-after-loaded
+   'nnmail
+   (lambda ()
+     (defun nnmail-find-file (file)
+       "Insert FILE in server buffer safely. [tm-sgnus.el]"
+       (set-buffer nntp-server-buffer)
+       (erase-buffer)
+       (let ((format-alist nil)
+             (after-insert-file-functions   ; for jam-code-guess
+              (if (memq 'jam-code-guess-after-insert-file-function
+                        after-insert-file-functions)
+                  '(jam-code-guess-after-insert-file-function)))
+            (file-coding-system-for-read *noconv*))
+        (condition-case ()
+            (progn (insert-file-contents file) t)
+          (file-error nil))))
      ))
   (defun tm-gnus/prepare-save-mail-function ()
     (setq file-coding-system *noconv*)
     )
   (add-hook 'nnmail-prepare-save-mail-hook
            'tm-gnus/prepare-save-mail-function)
-  ;; (add-hook 'nnmbox-prepare-save-mail-hook
-  ;;           'tm-gnus/prepare-save-mail-function)
-  ;; (add-hook 'nnbabyl-prepare-save-mail-hook
-  ;;           'tm-gnus/prepare-save-mail-function)
-  ;; (add-hook 'nnml-prepare-save-mail-hook
-  ;;           'tm-gnus/prepare-save-mail-function)
-  ;; (add-hook 'nnmh-prepare-save-mail-hook
-  ;;           'tm-gnus/prepare-save-mail-function)
-  ;; (add-hook 'nnfolder-prepare-save-mail-hook
-  ;;           'tm-gnus/prepare-save-mail-function)
   
-  (gnus-set-newsgroup-default-coding-system "alt.chinese.text"      '*hz*)
-  (gnus-set-newsgroup-default-coding-system "alt.chinese.text.big5" '*big5*)
-  (gnus-set-newsgroup-default-coding-system "han"    '*euc-kr*)
-  (gnus-set-newsgroup-default-coding-system "relcom" '*koi8*)
+  (gnus-set-newsgroup-default-coding-system "alt.chinese.text"      *hz*)
+  (gnus-set-newsgroup-default-coding-system "alt.chinese.text.big5" *big5*)
+  (gnus-set-newsgroup-default-coding-system "han"    *euc-kr*)
+  (and (boundp '*koi8*)
+       (gnus-set-newsgroup-default-coding-system "relcom" *koi8*))
   ))
 
 
@@ -338,11 +352,9 @@ This variable is set to `gnus-show-mime'.")
        (if (eq method 'nntp)
           (progn
             (setq from
-                  (code-convert-string
-                   from mime/default-coding-system *internal*))
+                  (character-decode-string from mime/default-coding-system))
             (setq subj
-                  (code-convert-string
-                   subj mime/default-coding-system *internal*))
+                  (character-decode-string subj mime/default-coding-system))
             ))
        (mail-header-set-from
        header (mime-eword/decode-string from))
@@ -353,7 +365,7 @@ This variable is set to `gnus-show-mime'.")
      
 (or (boundp 'nnheader-encoded-words-decoding)
     (add-hook 'gnus-select-group-hook
-             #'tm-gnus/decode-summary-from-and-subjects)
+             'tm-gnus/decode-summary-from-and-subjects)
     )