Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mew-summary-* 対応



From: Rei FURUKAWA <furukawa@xxxxxxxxxxxx> さん曰く
Subject: [namazu-devel-ja] Re: mew-summary-* 	対応
Message-ID: <20001226222004Z.furukawa@xxxxxxxxxxxx>
Date: Tue, 26 Dec 2000 22:20:04 +0900

古川> # 今朝、浜松市北部では雪がちらついていました

## 今日もなかなか寒いですね。ぶるぶる。

shirai> おまけ。
shirai> ○ Pack/Sort の後、勝手に fixer を起動します。
shirai> ○ "zf" で fixer を起動します。

古川> これは本当に便利です。

古川> # というか、これがなければ、fixer は「使えるツール」ではない、と言って
古川> # もいいくらい

おほめ下さってありがとうございます。てれるぜ。

しかし、実は、scan が動いていて pack/sort が出来ないときでも
fixer を動かしてしまっていたので付属のものに変えてくださいませ。

# before と after に advice をかますんだったら、function を別の
# function でくるんじゃった方がいいかもしれないのですが。。。

furukawa> 該当するファイルが見つからなかったときには、NMZ.t に -1 を入れるように
furukawa> しました。これにより、削除されたエントリとして扱われるはずです。

古川> これで、実際に削除が発生した場合に、その後の mknmz のステータスがおか
古川> しくなるケースがあるようです。

確かに、たまになんか変だなというときがありました。

古川> 当面は、refile したら、mknmz してから fixer を起動するようにした方が安
古川> 全ですので、そのようにお使いください。

了解です。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxxxxxxxxxx)
(defvar mew-nmz-prog-fixer "nmz-mew-summary-fixer.pl")
(defvar mew-nmz-prog-fixer-args '())

(add-hook 'mew-summary-mode-hook
	  (lambda ()
	    (define-key mew-summary-mode-map "zf" 'mew-nmz-exec-fixer)))

(defvar mew-nmz-allow-fixer nil)
(make-variable-buffer-local 'mew-nmz-allow-fixer)

(defadvice mew-summary-sort (before allow-fixer activate)
  (setq mew-nmz-allow-fixer (not mew-summary-buffer-process)))

(defadvice mew-summary-sort (after exec-fixer activate)
  (mew-nmz-exec-fixer))

(defadvice mew-summary-pack (before allow-fixer activate)
  (setq mew-nmz-allow-fixer (not mew-summary-buffer-process)))

(defadvice mew-summary-pack (after exec-fixer activate)
  (mew-nmz-exec-fixer))

(defun mew-nmz-exec-fixer ()
  (interactive)
  (mew-summary-only
   (let* ((interactive-p (interactive-p))
	  (fld (if interactive-p
		   (mew-input-folder (mew-summary-folder-name))
		 (mew-summary-folder-name)))
	  (fixer
	   (if (fboundp 'mew-which-exec)
	       (mew-which-exec mew-nmz-prog-fixer)
	     (mew-which mew-nmz-prog-fixer exec-path)))
	  (args mew-nmz-prog-fixer-args)
	  nmzdir)
     (if (not (or interactive-p mew-nmz-allow-fixer))
	 ()
       (if (not (and fld fixer))
	   (and interactive-p
		(message "Can not exec %s." mew-nmz-prog-fixer))
	 (setq nmzdir (mew-nmz-expand-folder fld))
	 (setq fld (mew-expand-folder fld))
	 (if (and
	      (file-exists-p nmzdir)
	      (file-directory-p nmzdir)
	      (file-exists-p (expand-file-name "NMZ.i" nmzdir))
	      (file-exists-p (expand-file-name "NMZ.field.message-id" nmzdir))
	      (file-exists-p (expand-file-name "NMZ.field.size" nmzdir))
	      (file-exists-p (expand-file-name "NMZ.field.date" nmzdir))
	      (not (file-name-all-completions "NMZ.lock" nmzdir)))
	     (progn
	       (message "Exec %s (%s) ..." mew-nmz-prog-fixer nmzdir)
	       (apply (function call-process)
		      fixer nil nil nil
		      (append args (list fld nmzdir)))
	       (message "Exec %s (%s) ... done." mew-nmz-prog-fixer nmzdir))
	   (and interactive-p
		(message "Can not exec %s at %s." mew-nmz-prog-fixer nmzdir))))))))