[mew-win32 04030] Re: Meadow 1.15 + Mew 3.3 での全文検索について
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
2004年 3月 4日 (木) 17:57:21 JST
## うーん全然わからない。。。
Mew 3.3 でも試してみましたが、
Id: mg,v 2.24 2000/10/02 03:57:45 utashiro Exp
Id: mg,v 5.0.1.1 2001/09/14 14:59:42 utashiro Exp
の二つで問題なく動いています。Active perl はちょっと古くて
This is perl, version 5.005_03 built for MSWin32-x86-object
From: Yasushi OHYAMA <paf03637 at example.com> さん曰く
Subject: [mew-win32 04029] Re: Meadow 1.15 + Mew 3.3 での全文検索について
Message-ID: <20040303.033746.65740402.paf03637 at example.com>
Date: Wed, 03 Mar 2004 03:37:46 +0900 (LMT)
> メールのファイルを開いて、sjis-dos でセーブしたら、このファイルに
> 限り日本語検索ができました。とはいえ、これをやると Mew 上では化け
> 化けで読めません。
> (setq mew-prog-grep "mg")
> (setq mew-prog-grep-opts '("-j" "jis" "-e" "-l" "-x" "&mime" ))
"-j jis" というオプションを mg につけているので、jcode.pl の機能
を使って sjis で mg に渡した検索文字列を mg が jis に変換して検
索するようになっています。(と思います)
> 何となく、mg で検索する際に入力するパターン文字列の漢字コードに問
> 題があるような気がします。
うーーん、この辺りの機能が Mew に導入されたとき、パターンの文字
コードの話でいろいろとあった(ぼくも渦中にいた)のですが、Mew 3.3
なら問題ないとおもうのです。
。。。と、いつまでやっていても切りが無いので、実験用のコードを作っ
てみました。添付の test.el を表示した buffer で
M-x eval-buffer
と入力すると、Mew の検索関数をちょっとだけ変えて "*tmp*" という
buffer に情報を表示するようになるので、試してみてください。例え
ば、+inbox で '白井' を検索するとこんな風な結果が出ます。
c:/home/shirai/Mail/inbox
白井
白井
4
3
2
10
--
白井秀行@Mew 3.3 のリリース版のはなしですよね?
-------------- next part --------------
(defun mew-summary-pick-with-grep (pattern msgs)
"A function to pick messages matching PATTERN with 'grep'."
(setq msgs (delq nil msgs))
(if (= (length msgs) 1) (setq msgs (cons "/dev/null" msgs)))
(setq pattern (mew-cs-encode-arg pattern))
(insert (decode-coding-string pattern 'shift_jis) "\n")
(let (nxt)
(while msgs
(goto-char (point-max))
(setq nxt (nthcdr mew-prog-grep-max-msgs msgs))
(if nxt (setcdr (nthcdr (1- mew-prog-grep-max-msgs) msgs) nil))
(apply 'call-process
mew-prog-grep nil t nil
(append mew-prog-grep-opts (list pattern) msgs))
(setq msgs nxt))))
(defun mew-summary-pick-with-external (folder pattern)
"A function to pick messages matching PATTERN with
'mew-summary-pick-with-external-function'."
(let* ((dir (mew-expand-folder folder))
(default-directory dir) ;; buffer local
(msgs (mew-dir-messages "."))
(buf (get-buffer-create "*tmp*")))
;; no sort here
(when msgs
(save-excursion
(pop-to-buffer buf)
(erase-buffer)
(insert dir "\n")
(insert pattern "\n")
(cd dir)
(mew-piolet
mew-cs-text-for-read mew-cs-text-for-write
(mew-alet
(funcall mew-summary-pick-with-external-function pattern msgs)))
(goto-char (point-min))
(setq msgs nil)
(while (not (eobp))
(if (looking-at mew-regex-message-files2)
(setq msgs (cons (mew-match-string 0) msgs)))
(forward-line)))
(setq msgs (mew-uniq-list msgs))
(setq msgs (mapcar 'string-to-int msgs))
(setq msgs (sort msgs '<))
(mapcar 'int-to-string msgs))))
Mew-win32 メーリングリストの案内