[mew-dist 22263] Re: accelerating by-folder

Kazu Yamamoto ( 山本和彦 ) kazu at example.com
2002年 11月 13日 (水) 17:58:06 JST


From: KOIE Hidetaka (鯉江英隆) <hide at example.com>
Subject: [mew-dist 22261] Re: accelerating by-folder

> (mew-assoc-folder
>  "foo"
>  '(("+foo/" . "foo") ("+foo/foo/" . "foo") ("+foo/foo/foo" . "foo"))
>  t)
> => ("+foo/foo/" . "foo")
> 
> となるみたいですが、よいでしょうか。

秘密にしていたのに、お気付きになられましたか。

以下でどうでしょう?

(defun mew-assoc-folder (key alist localp)
  (let ((skey (downcase key)) ret ret2 regex)
    (if (not localp)
	(rassoc skey alist)
      ;; ("+foo/" . "foo")
      ;; ("+foo/foo" . "foo")
      (setq regex (concat mew-path-separator "$"))
      (setq ret (rassoc skey alist))
      (setq ret2 ret)
      (while (and ret (string-match regex (car ret)))
	(setq alist (cdr (member ret alist)))
	(setq ret (rassoc skey alist)))
      (or ret ret2))))

P.S.

大文字入りのフォルダを使っている人は少なからずいるようなので、デフォル
トは既存の遅い関数を使うことにします。(仮) mew-use-fast-refile を t に
すれば、大文字は使えないけど、refile は高速になるようにします。

--かず



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