[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: New nnshimbun.el based on shimbun library



>>>>> In [semi-gnus-ja : No.6059] 
>>>>>	Katsumi Yamaoka <yamaoka@namazu.org> wrote:

山岡> Gnus と gnus の切り替え、という以前に Gnus での試用はこれからで
山岡> す。

遅くなりましたが、Oort Gnus v0.04 における nnshimbun.el の試用リ
ポートします。
まあ当然なのかもしれませんが、特に問題無く使えています。

以下はそのやり方。ぼくは Gnus を使うときは gnus の path を
load-path から削除することを前提としています。

・Gnus と gnus の切り替えは、取りあえず、同じディレクトリに
  gnus.elc と mailcap.elc が存在するか、で調べることにしました。
  [1]

・Gnus には `gnus-clfns' が無いので簡単に `ignore-errors' で囲っ
  てしまいましたが、究極的には run-time cl functions を使わない
  ようにしてしまえば良いのではないかと思います。
  [1]

・関数 `nnshimbun-make-shimbun-header' の、Gnus と gnus で違う部
  分を static-if で切り替えてしまうのは駄目ですか?

・Gnus には gnus-bbdb.el が無いし、まんま gnus から持って来ても
  動かないので BBDB を使わないようにしました。
  [2]

・Gnus 用に `gnus-group-make-shimbun-group' を定義しました。
  [2]

[1] は添付したパッチに含まれています。このパッチを当てた
nnshimbun.el を Gnus のソース (lisp/) ディレクトリに押し込んで
make install したものを使っています。

[2] はやはり添付した .gnus に書き込むプログラムで実現しています。
--- nnshimbun.el~	Mon May 28 02:28:05 2001
+++ nnshimbun.el	Mon May 28 12:09:37 2001
@@ -34,7 +34,9 @@
 (gnus-declare-backend "nnshimbun" 'address)
 
 (eval-when-compile (require 'cl))
-(eval-when-compile (require 'gnus-clfns))
+(eval-when-compile
+  (ignore-errors;; Gnus does not have `gnus-clfns'.
+    (require 'gnus-clfns)))
 
 (require 'nnheader)
 (require 'nnmail)
@@ -148,9 +150,18 @@
       (substring x 6)
     x))
 
+(eval-when-compile
+  ;; To avoid byte-compile warning for Gnus.
+  (autoload 'mime-entity-fetch-field "mime"))
+
 (eval-and-compile
-  (if (fboundp 'mime-entity-fetch-field)
-      ;; For Semi-Gnus.
+  (if (let ((gnus (locate-library "gnus"))
+	    ;; Gnus has "mailcap.elc" in the same directory of "gnus.elc".
+	    (mailcap (locate-library "mailcap")))
+	(and gnus mailcap
+	     (not (string-equal (file-name-directory gnus)
+				(file-name-directory mailcap)))))
+      ;; For Semi-gnus.
       (defun nnshimbun-make-shimbun-header (header)
 	(shimbun-make-header
 	 (mail-header-number header)
;;[2]
(eval-after-load "gnus-group"
  '(or (fboundp 'gnus-group-make-shimbun-group)
       (progn

 (eval-after-load "gnus-art"
   ;; Don't use gnus-bbdb. :-<
   '(setq gnus-article-prepare-hook nil))

 (defvar gnus-group-shimbun-server-history nil)

 (defun gnus-group-make-shimbun-group ()
   ;; T-gnus の gnus-group.el から同名の関数をコピー。
   )

 (if (featurep 'bytecomp)
     (byte-compile 'gnus-group-make-shimbun-group)))))
-- 
Katsumi Yamaoka <yamaoka@jpl.org>