[Mew-Win32 00317] Re: C-uZ

YAMAGUCHI, Shuhei yamagus at example.com
1998年 3月 2日 (月) 01:04:02 JST


やまぐち@ねっとらぴゅたの住人、です。

>>> In article <1998Feb2629188151782kose at example.com>,
>>>    小関 吉則(KOSEKI Yoshinori) <kose at example.com> writes:

  白井> # 以前ちょっと考えたのですが……
  白井> # やっぱり、elispのディレクトリ再帰はどう考えても遅そうですね。
  kose> 
  kose> そうでもないと思いますよ。
  kose> elispってperl scriptよりずっと速いし、Cで書くといっても外部
  kose> コマンドとして呼び出すことのオーバヘッドもあると思うし。
  kose> 
  kose> ;; 客観的な数値といわれると困るけど。

Assignment和訳途中の息抜き(^^;)に、elispでMewのフォルダを探索する関数
を作ってみました。
関数の構成など、少し整理が足りないので、mew.elに反映させてはないですけ
ど、Mew起動後に*scratch*から(mew-folder-list)するなどして味わってみて
ください。
あ、mew-use-file-attributesの値は、Meadowではt、Mule for Win32では必ず
nilに設定してください。

#だれかMule for Win32で試してみてください。
#しばらく前にWin95を再インストールして以来、Mule for Win32にMew入れて
#ないんです。 ^^;

でわでわ
-- 
yamagus at example.com / やまぐち@ねっとらぴゅたの住人
  yamagus at example.com / 山口 修平
PGP-Fingerprint: 25 0F 6F E1 57 AD 56 08  3A BC D0 9B 48 AF 31 7A
-------------- next part --------------
(defvar mew-use-file-attributes t
;;;  (< 2 (nth 1 (file-attributes (mew-expand-folder "+"))))
  "If t, 2nd element of a returned list from file-attribute,
as known to be LINK COUNT, works.
Otherwise, never use file-attributes for making folder list,
and any system can make list safety, but too slow.

For Mule for Win32 and OS/2 Mule users:
This might be set to nil.")

(defun mew-folder-list ()
  (append (mew-folder-list0 "+")
	  (mew-folder-list0 "=")))

(defun mew-folder-list0 (folder)
  (let (curdir relpath abspath dirent folders subprefix subfolder)
    (setq curdir (mew-expand-folder folder))
    (setq dirent (directory-files curdir))
    (if (string-match "^[+=]$" folder)
	(setq subprefix folder)
      (setq subprefix (concat folder "/")))
    (mapcar
     '(lambda (relpath)
	(setq abspath (expand-file-name relpath curdir))
	(and (file-directory-p abspath)
	     (not (string-match "^\\.\\.?$" relpath))
	     (setq subfolder (concat subprefix relpath))
	     (setq folders (append folders (list subfolder)))
	     (if mew-use-file-attributes
		 (< 2 (nth 1 (file-attributes abspath)))
	       t)
	     (setq folders (append folders (mew-folder-list0 subfolder)))))
     dirent)
    folders))


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