[Mew-Win32 00344] Re: mew-folder-list (Re: C-uZ)
YAMAGUCHI, Shuhei
yamagus at example.com
1998年 3月 3日 (火) 17:15:51 JST
やまぐち@ねっとらぴゅたの住人、です。
>>> In article <19980303132445N.yamagus at example.com>,
>>> "YAMAGUCHI, Shuhei" <yamagus at example.com> writes:
himi> あのー、とってもいいにくいんですが、;_;
himi> w32-get-true-file-link-count's value is
himi> 100
yamagus> (snip)
himi> すんません。というわけで、ディフォルトは100個までで、サボってます。;_;
himi> w32-get-true-file-link-countをtにして、やってみてください。
yamagus> リンクカウントが2よりも大きいかどうかのチェックにしかつかってないので、
yamagus> 2以上の値さえ返れば問題ないと思うのですが、どうでしょう?
あー、これ、やっとわかりました。 ^^;
チェックするファイルの順番によっては、ディレクトリがカウントされない危
険性があるのですね。
#impathとmew-folder-listがつくった.foldersを比較してわかりました。
##これにすぐ気付けないとは…ぷろぐらまの素質ないなぁ、我ながら。 ^^;
>>> In article <19980303153625L.shirai at example.com>,
>>> Hideyuki SHIRAI <Shirai at example.com> writes:
Shirai> とりあえず、動くようにしたつもりです。確かめてみて下さい。
ありがとうございます。 :-)
しかし、mew-use-folders-file-pもmew-folder-listもtの場合、C-uZ時にリス
トが倍になるみたいです。
とういうわけで、以上2点を修正したものをお贈りします。
#何が「家に帰ってからやる」んだか…。 ^^;
でわでわ
--
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 --------------
;; -*- 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 17:00>
;;
;; 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, aka
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)
(w32-get-true-file-link-count 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)
(cond
((and (not updatep)
mew-use-folders-file-p
(file-readable-p file))
(insert-file-contents file))
(mew-use-folder-list-function
(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))))
(t
(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 (< (point-min) (point-max))
(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 メーリングリストの案内