[Mew-Win32 00336] Re: mew-folder-list (Re: C-uZ)
YAMAGUCHI, Shuhei
yamagus at example.com
1998年 3月 3日 (火) 13:23:20 JST
やまぐち@ねっとらぴゅたの住人、です。
>>> In article <uk9ac6ezr.fsf at example.com>,
>>> Miyashita Hisashi(宮下 尚:HIMI) <himi at example.com> writes:
himi> あのー、とってもいいにくいんですが、;_;
himi> w32-get-true-file-link-count's value is
himi> 100
(snip)
himi> すんません。というわけで、ディフォルトは100個までで、サボってます。;_;
himi> w32-get-true-file-link-countをtにして、やってみてください。
リンクカウントが2よりも大きいかどうかのチェックにしかつかってないので、
2以上の値さえ返れば問題ないと思うのですが、どうでしょう?
tよりもむしろ、3なんて値を設定しちゃえば、さらに速くなるような気もする
のですが、そういうことじゃないのでしょうか?
#私のところでは、デフォルトのままでも、1000ぐらいのメールを含むフォル
#ダの下に、さらにフォルダがあるようなものもリストにのぼっています。
##ハードディスク上ですけど。
なにはともあれ、家で実験してみます。 ^^;
>>> In article <19980303034530B.shuuic-k at example.com>,
>>> Shuichi Kitaguchi <shuuic-k at example.com> writes:
shuuic-k> でも、数字のディレクトリ名ってなるべくしない方がいいでしょうね。
shuuic-k> 昔、"+FreeBSD-users-jp/9610" という感じで整理しようとして、メールを
shuuic-k> 大量に失いました(一万通越えてたので重なりまくったらしい)。
幸いこれでロストしたことはないのです、が…。
昔、普段は+ml/FreeBSD-users-jpに整理して、月初めに前月分を
+ml/FreeBSD-users-jp/199803に整理する、とういことをしていたら、Mewから
+ml/FreeBSD-users-jpを覗いた時に、変な挙動をしました。 ^^;
今でも同様なのかわかりませんが、数字フォルダはやめた方がいいでしょうね。
#そう考えると、このmew-folder-listもOS/2でも充分有効そうだし、Mew-dist
#やimgに出してみる価値も少しぐらいあるかなぁ…。
##とりあえず、今こんなことをしてるってことぐらいは出しておこうかなぁ。
とまぁ、ずらずら書きましたが、今度はMewに寄生する形式のコードです。
まだパッチじゃないですが、今回のはMewの起動を速くすることができます。
#題して、mew-parasite.el ^^;
pathの通ったところに置いて、.emacsに以下を追加するだけでいいと思います。
(eval-after-load "mew" '(load "mew-parasite"))
なお、絶対にmew-init-hookの中に入れることはしないでください。
#まぁ、効果が出ないだけですけど。 ;p
私はmew-use-folders-file-pをtにしたことがない(^^;)ので、どなたかtの状
態で試してみてくれるとうれしいです。
でわでわ
--
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
(会社より)
#w32-get-true-file-link-countとmew-use-folders-file-p、および、UNIX上
#でのシンボリックリンクなフォルダに対する、現行のimpathの振る舞いを調
#査して、それらを実装した時点で完成形にしたいと思います。
-------------- next part --------------
;; -*- emacs-lisp -*-
;; mew-parasite.el --- Parasitic on, tune up your Mew!
;;
;; "YAMAGUCHI, Shuhei" <yamagus at example.com>
;; Created: <03/03/1998>
;; Revised: Time-stamp: <03/03/1998 12:47>
;;
;; To use mew-parasite.el, put the following codes in your .emacs.
;; (eval-after-load "mew" '(load "mew-parasite"))
(defvar mew-use-folder-list-function t
"If t, Mew uses mew-folder-list function as a subsutitute for
'impath --list'.")
(defvar mew-folder-list-use-file-attributes
(or (not (eq system-type 'windows-nt))
(fboundp 'Meadow-version))
"If t, 2nd element of a returned list from file-attribute,
as known to be LINK COUNT, works.
Otherwise, never use file-attributes for checking existence of
subfolders, 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.")
(defvar mew-folder-list-skip-pattern "^\\(\\.\\.?\\|^[0-9]+\\)$"
"If file-name matches this pattern, mew-folder-list never consider
it as folder without checking file-type.
Default is \"^\\\\(\\\\.\\\\.?\\\\|^[0-9]+\\\\)$\", and it assumes
you never have numeric folders like \"+foo/199803\".")
(defun mew-folder-list (folder)
(let ((case-fold-search t)
folders curdir dirent relpath abspath attr
subprefix subfolder)
(setq curdir (mew-expand-folder folder))
(if (string-match "^[+=]$" folder)
(setq subprefix folder)
(setq subprefix (concat folder "/")))
(setq dirent (directory-files curdir))
(while dirent
(setq relpath (car dirent))
(setq dirent (cdr dirent))
(setq abspath (expand-file-name relpath curdir))
(and
(not (string-match mew-folder-list-skip-pattern relpath))
(eq (nth 0 (setq attr (file-attributes abspath))) t)
(setq subfolder (concat subprefix relpath))
(setq folders (nconc folders (list subfolder)))
(or
(and
mew-folder-list-use-file-attributes
(>= 2 (nth 1 attr)))
(setq folders (nconc folders (mew-folder-list subfolder))))))
folders))
(defun mew-folder-make-list (updatep)
(save-excursion
(let ((case-fold-search t)
(folders ())
(folder nil)
(start nil)
(file (expand-file-name mew-folders-file mew-mail-path)))
(mew-set-buffer-tmp)
(if (and (not updatep)
mew-use-folders-file-p
(file-readable-p file))
(insert-file-contents file)
(if mew-use-folder-list-function
(progn
(setq folders (nconc (mew-folder-list "+")
(mew-folder-list "=")))
(if mew-use-folders-file-p
(progn
(mapcar
(lambda (folder)
(insert folder "\n"))
folders)
(write-region (point-min) (point-max) file nil 'no-msg))))
(mew-im-call-process nil mew-prog-impath "--list=yes" "--src=+")
(mew-im-call-process nil mew-prog-impath "--list=yes" "--src==")
(if mew-use-folders-file-p
(write-region (point-min) (point-max) file nil 'no-msg))
))
(if (not mew-use-folder-list-function)
(progn
(goto-char (point-min))
(while (not (eobp))
(setq start (point))
(if (not (looking-at "[+=]"))
(forward-line)
(forward-line)
(setq folder (mew-buffer-substring start (1- (point))))
(if (and (car folders)
(string-match (concat "^" (regexp-quote
(file-name-as-directory
(car folders))))
folder))
;; regexp-quote is not necessary since not "+".
(setq folders
(cons folder
(cons (file-name-as-directory (car folders))
(cdr folders))))
(setq folders (cons folder folders))))
)))
folders ;; return value
)))
Mew-win32 メーリングリストの案内