[Mew-dist 08290] Re: namazu.el for mew

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
1999年 3月 26日 (金) 13:04:33 JST


白井です。

白井> 1. "z^" (mew-namazu-search-parent)
白井>  imhist でも同じことが出来ますが、*親* の message を追いかける
白井>  namazu 版です。IM なら可能な annotate 情報の検索は捨てました。

バグってました。;_;

namazu.h の #define QUERY_MAX_LENGTH 256
より長い検索パターンははじかれちゃうのでガードしました。
手入力のパターンはガードしていません。

また、人それぞれだと思うのですが、
#define DBNAMELENG_MAX 256
はもっと大きめの値にして make した方が良いかもしれません。


--- mew-namazu.el.orig	Fri Mar 26 12:41:00 1999
+++ mew-namazu.el	Fri Mar 26 12:42:17 1999
@@ -63,6 +63,10 @@
 ;; fast-pick mode =>なるだけ elisp で summary を作る mode。
 (defvar mew-namazu-use-fast-pick t "*Use fast pick mode.")
 
+;; namazu.h の QUERY_MAX_LENGTH と同じ値を入れる。
+(defvar mew-namazu-query-max-length 256
+  "*Namazu query string max length.")
+
 ;; namazu の index を作る Perl script。
 (defvar mew-namazu-prog-mknmz "mknmz" "*Namazu make index program.")
 ;; -u => uuencode と BinHex の部分を無視する
@@ -108,7 +112,7 @@
 (defun mew-namazu-search-parent (&optional mid)
   (interactive)
   (let ((folder (mew-summary-folder-name))
-	(idh (list mew-in-reply-to: mew-references:))
+	(idh (list mew-references: mew-in-reply-to:))
 	mess ref pid rh)
     (if mid
 	(setq pid (list mid)
@@ -137,12 +141,15 @@
 	  (forward-line -1)))
     (set-marker mew-summary-inbox-position (point) (current-buffer))
     (message "Searching parent ...")
-    (let ((pattern (concat "( "
-			   (mapconcat
-			    '(lambda (id) (format "+message-id:%s" id))
-			    pid " | ")
-			   " )"))
-	  range)
+    (let ((pattern "")
+	  (addpattern "+message-id:"))
+      (while pid
+	(if (> (length (concat pattern addpattern (car pid)))
+	       mew-namazu-query-max-length)
+	    (setq pid nil)
+	  (setq pattern (concat pattern addpattern (car pid)))
+	  (setq addpattern " | +message-id:")
+	  (setq pid (delete (car pid) pid))))
       (setq range (and (not mid)
 		       (nreverse (mew-namazu-pick folder pattern))))
       (if (null range)



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