\documentstyle[a4j]{jarticle}
\setcounter{secnumdepth}{6}
\setcounter{tocdepth}{6}
\topsep=0.1cm
\parsep=0.1cm
\itemsep=0.0cm
\begin{document}
\title{
tm-gnus 説明書}
\author{
守岡 知彦\\
}
\date{
1994年7月27日}
\maketitle
\medskip

\section{Install}
\medskip
\par
*.el を Emacs の変数 load-path で指定された directory に copy します。
tm-gnus は、tiny-mime (MIME header encoder/decoder), tm-body (MIME
body player), tm-misc (tm-$<$MUA$>$ 共通 module), tm-gnus の各 module から
なります。各 module 毎の install 法は以下の通りです。
\medskip
\medskip

\subsection{tiny-mime の install}
\medskip
\par
tiny-mime.el を Emacs の変数 load-path で指定された directory に
copy します。
\medskip
\medskip

\subsection{tm-body の install}
\medskip
\par
tm-body.el, tl-list.el, tl-header.el を Emacs の変数 load-path で指
定された directory に copy します。
\medskip
\medskip

\subsection{tm-misc の install}
\medskip
\par
tm-misc.el, tl-hook.el を Emacs の変数 load-path で指定された
directory に copy します。
\medskip
\medskip

\subsection{tm-gnus の install}
\medskip
\par
tm-gnus.el と tm-gnus3.el を Emacs の変数 load-path で指定された
directory に copy します。tm-gnus3.el を byte-compile する場合は、GNUS
3 が load された状態で行なって下さい。
\medskip
\medskip
\medskip

\section{設定}
\medskip
\par
.emacs に以下のものを入れます。
\medskip
{\baselineskip=10pt
\begin{verbatim}
----------------------------------------------------------------------
(if (not (fboundp 'add-hook))
    (require 'tl-hook)
  )

(let ((le (function
           (lambda ()
             (require 'tm-gnus)
             )))
      )
  (if (boundp 'MULE)
      (progn
        (add-hook 'gnus-Group-mode-hook (function gnusutil-initialize))
        (add-hook 'gnus-group-mode-hook (function gnusutil-initialize))
        (autoload 'gnusutil-initialize "gnusutil")
        (autoload 'gnusutil-add-group "gnusutil")
        (add-hook 'gnusutil-initialize-hook le)
        )
    (progn
      (add-hook 'gnus-Startup-hook le)
      (add-hook 'gnus-startup-hook le)
      )))
----------------------------------------------------------------------
\end{verbatim}}
\medskip
\par
Mule における上記の設定は、gnusutil を併用する場合のものですが、
gnusutil を併用しない場合は (require 'tm-gnus) だけで結構です。
\medskip
\medskip

\section{使い方}
\medskip
~\\
\begin{tabular}{|c|c|}
\hline
 key  &                        機能                                 \\
\hline\hline
 M-t  & message header を decode に関する toggle switch             \\
\hline
  v   & message body を MIME decode して、再生する (play mode)      \\
  e   & message body を MIME decode して、file に落す (extract mode)\\
C-c p & message body を MIME decode して、印刷する (print mode)     \\
\hline
\end{tabular}\\
\medskip
\par
message body の MIME decode において、実際に各動作が行なわれるかどう
かは、各 Content-Type に対応する tm-body の mthod に依存します。
\medskip
\medskip

\section{各種設定}
\medskip

\subsection{metamail を使う方法}
\medskip
\par
tm-mh-e は MIME body の decode に tm-body を使いますが、metamail を
使うように設定することも可能です。但し、metamail と metamail.el が必要
です。
\medskip
\par
この場合 .emacs に以下のものを入れて下さい。
\medskip
{\baselineskip=10pt
\begin{verbatim}
----------------------------------------------------------------------
(autoload 'metamail-buffer "metamail" nil t)
(setq mime/body-decoding-method (function metamail-buffer))
----------------------------------------------------------------------
\end{verbatim}}
\medskip
\par
metamail を使う設定の場合、`v', `e', `C-c p' に対応する動作は
metamail にかけるだけになり、同一の動作になります。また、動作は逐次的
になります。
\medskip
\medskip

\subsection{article を save する時 decoding しない}
\medskip
\par
article を save する時、保存される message はその時表示されているよ
うに、その時の MIME header decoding mode に応じて save されます。
\medskip
\par
しかし、article を save する時、常に、MIME header decoding を行なわ
ない、生の message で保存したい場合は
(tm-gnus/set-mime-header-decoding-mode nil) を行なって、MIME header
decoding を行なわない mode にして、article save 関数を実行するように設
定して下さい。
\medskip
\par
Save の実行後、MIME header decoding mode を前の状態に戻したい場合は、
以下のように、一時変数に MIME header decoding mode を保存しておけば OK
です。
\medskip
{\baselineskip=10pt
\begin{verbatim}
        (let ((mm mime/header-decoding-mode))
          (tm-gnus/set-mime-header-decoding-mode nil)
          (article save 関数)
          (tm-gnus/set-mime-header-decoding-mode mm)
          )
\end{verbatim}}
\medskip
\par
以下に、mh-e の folder に save する場合の例を示します。
\medskip
{\baselineskip=10pt
\begin{verbatim}
----------------------------------------------------------------------
(add-hook 'gnus-Startup-hook
          (function
           (lambda ()
             (setq gnus-default-article-saver
                   (function
                    (lambda ()
                      (interactive)
                      (let ((mm mime/header-decoding-mode))
                        (tm-gnus/set-mime-header-decoding-mode nil)
                        (gnus-Subject-save-in-folder)
                        (tm-gnus/set-mime-header-decoding-mode mm)
                        )))))))
(add-hook 'gnus-startup-hook
          (function
           (lambda ()
             (setq gnus-default-article-saver
                   (function
                    (lambda ()
                      (interactive)
                      (let ((mm mime/header-decoding-mode))
                        (tm-gnus/set-mime-header-decoding-mode nil)
                        (gnus-summary-save-in-folder)
                        (tm-gnus/set-mime-header-decoding-mode mm)
                        )))))))
----------------------------------------------------------------------
\end{verbatim}}
\medskip
\medskip

\subsection{reply する時 Subject の encoding 法を reply 元に合わせる}
\medskip
\par
Reply する時、reply 元の Subject に ASCII 以外の文字集合の入っている
場合、reply 元が MIME encode されていたら encode し、そうでなかったら
生で入れたい場合は、次のように設定します。
\medskip
{\baselineskip=10pt
\begin{verbatim}
----------------------------------------------------------------------
(add-hook 'gnus-article-prepare-hook
          (function
           (lambda ()
             (if (mime/exist-encoded-word-in-subject)
                 (setq mime/no-encoding-header-fields '("X-Nsubject"))
               (setq mime/no-encoding-header-fields '("X-Nsubject" "Subject"))
               ))))
----------------------------------------------------------------------
\end{verbatim}}
\end{document}
