[mew-win32 03943] Re: mew-nmz.el でインデックスが作成できない

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2003年 7月 22日 (火) 15:52:09 JST


白井です。Fujishima さん、どーもです。

From: Hiroshi Fujishima <pooh at example.com> さん曰く
Subject: [mew-win32 03942] Re: mew-nmz.el でインデックスが作成できない
Message-ID: <20030722.151214.125120569.pooh at example.com>
Date: Tue, 22 Jul 2003 15:12:14 +0900 (JST)

> > 現在の Mew に IM が必要ではないなら、Mew の contrib に入れる方が自然で
> > はないかという気がします。あるいは contrib/00readme-namazu.jis に、
> > immknmz は別配布になっていることが一言書かれていれば良いのかもしれませ
> > ん。
> 
> 書かれているようです。
> 
> 	1. 準備
> 	1.1. 必要 Version
> 	 以下に示す version のソフトウェア群が必要です。
> 
> 	・IM     => IM141 以降があると、command line からも index 生成ができます。

# こんなことが書いてあったとは気付かなかった ^^;;;

なお、素の IM は『cygwin な Perl では動きません』ので注意してく
ださい。

ちなみに、木下さんのところの im-145 は immknmz もいじって下さっ
ていて、00readme-namazu.jis で説明してある immknmz とはオプショ
ンや設定が若干変わっています。以下、思いついたことを徒然と。。。


(1) IM のインストール
im-145 の Active Perl 環境でのインストールは

ftp://ftp.mew.org/pub/Mew/Win32/old/IM140W0.ZIP

を貰ってきて、そのなかに含まれる、

00readme.win32, env.pl, im.exe, im.ini 

を im-145 の同じ位置にコピーして "im.exe" を起動する、のが一番簡
単だと思います。(今、やってみました。問題なし)
im.exe 単独はなかったっけ?

# どっちにしろ、最近は "IM ってなぁに?" って方もいらっしゃいま
# すよね。うーーん悩ましい。。。


(2) ~/Mail/.folders
最近の Mew は IM で使っている ~/Mail/.folders という folder が書
き込まれているファイルを作りませんので、ぼくはこんなことをやって
います。immknmz から使っています。

---------------------------------------------------------------
;; mknmz したくない folder を列記
(setq mew-ignore-folders
      `(,mew-draft-folder
	,mew-trash-folder
	,mew-queue-folder
	,mew-postq-folder
	,mew-attach-folder
	"+spam" "+virus" "+sent" "+shimbun" "+imap" "+schedule"))

(defun mew-ignore-folders-check (fld)
  (let ((iflds mew-ignore-folders) ifld)
    (catch 'igonre
      (while iflds
	(setq ifld (concat "^" (regexp-quote (car iflds))))
	(if (string-match ifld fld)
	    (throw 'igonre nil)
	  (setq iflds (cdr iflds))))
      t)))

;; 1Z などの後に ~/Mail/.folders を作る
(defadvice mew-local-folder-save (after folder-list-to-file activate)
  (let ((lst (mapcar 'car mew-local-folder-alist))
        (file (expand-file-name ".folders" mew-mail-path))
        fld)
    (when (and lst (not (boundp 'mew-cs-database)))
      (with-temp-buffer
        (while (setq fld (car lst))
          (when (and (string-match "^\\+[^+]" fld)
		     (mew-ignore-folders-check fld))
            (if (string-match "^\\(.+\\)/$" fld)
                (insert (substring fld 0 (match-end 1)) "\n")
              (insert fld "\n")))
          (setq lst (cdr lst)))
        (mew-frwlet
         mew-cs-autoconv mew-cs-text-for-write
         (write-region (point-min) (point-max) file nil 'nomsg))))))
---------------------------------------------------------------

これで "1Z" をしたときなど、~/Mail/.folder を更新します。

現在、ぼくの環境で .folders を積極的に使っているのは immknmz だ
けなので、mew-ignore-folders-check() などということをしています
が、他の IM アプリケーションでも .folders を使われるのなら、
(setq mew-ignore-folders nil) にして、~/.im/Config の
MknmzIgnoreFoldersRegex を指定するようにしてください。


(3) immknmz + Win32 固有の問題
Win32 限定の注意事項なのですが、Activate Perl の script から
Activate perl の script を system() で動かすことはできません。ど
ういうことかというと、immknmz に

$ret = system "mknmz -Uh $mknmz_args -O $nmzfolder -F $tempfile";

な行がありますが、こいつから呼ばれるのが、"mknmz.bat" だったら動
作しますが、"mknmz" という perl script だと動作しない、というこ
とです。namazu のインストールを win32 なインストーラを使って実行
すると、mknmz.bat という batファイルが出来るので問題ありませんが、
自分で cygwin な環境で configure/make すると mknmz しかできませ
んので、注意してください。

## 後、なんかあったかなぁ。。。

-- 
白井秀行 (mailto:shirai at example.com)



Mew-win32 メーリングリストの案内