[Mew-dist 04930] Re: Using for Threading
Hideyuki SHIRAI
Shirai at example.com
1998年 5月 28日 (木) 17:44:42 JST
白井です。
From: masato nagano <naga at example.com> さん曰く
Subject: [Mew-dist 04928] Re: Using for Threading
Message-ID: <19980528172405S.naga at example.com>
Date: Thu, 28 May 1998 17:21:49 +0900
nagano> togashi> ;;スレッドを有効にする。
nagano> togashi> (setq mew-prog-imls-arg-list '("--thread=yes" "--indent=2"))
nagano> togashi> とか(indent はお好みでどうぞ)でいかがでしょうか。
nagano>
nagano> 私も、この方法で、スレッド表示をさせていますが、
nagano> 現在の1.93b36では、pickを行なうと、Marking messages ... の途中で、
nagano>
nagano> Search failed: "^[ ]*178[^0-9]+"
nagano>
nagano> と言われてしまいます。
nagano>
nagano> mew-pick.elをちらっと読んだだけですが、message-numberが降順に並んでい
nagano> る前提で最適化してあるようなので、スレッドを有効にして表示していると、
nagano> 並びがぐちゃぐちゃになって、message-numberの最大、最小の取得と、マーク
nagano> 対象のsearchの時にうまくいかないようです。
こういう問題もありますし、私自身の慣れもあるので、普段はthread表
示しないのですが、たまにthreadでMLを読みたいなぁと思うときがあり、
以下のものを作って遊んでいます。
# ほとんど、mewのソースからの盗作ですが……
"T" でそのポイント以降のメールをthread表示し、"C-u T" で普通に表
示しなおします。
# mark とか region に対応したかったんですが、素直にあきらめました。
## 汚いコード(って汚いコードしか書けない)ですので、Own Risk でお
## 願いします
nagano> # mewとしては、スレッド表示は未対応なんですよね、たしか。
ですよね。確か。。。
;; ---------
;; define-key は mew-summary-mode-hook で評価してください。
(define-key mew-summary-mode-map "T" 'mew-thread)
(defun mew-thread (arg)
"Thread mode listing after point.
If with C-u normal mode listing after point."
(interactive "P")
(if (or (mew-syntax-number) (mew-summary-message-number))
(progn
(if (mew-syntax-number)
(while (not (mew-summary-message-number))
(forward-line -1)))
(if arg
(mew-thread-region (point) (point-max))
(mew-thread-region (point) (point-max) t)))
(message "Can't exec thread mode.")))
(defun mew-thread-region (r1 r2 &optional method)
(let (rbeg)
(save-excursion
(goto-char (min r1 r2))
(beginning-of-line)
(setq rbeg (point))
(mew-thread-region-subr rbeg method))))
(defun mew-thread-region-subr (&optional rbeg method)
(if (not (mew-summary-exclusive-p))
()
(mew-mark-clean-up)
(let* ((folder (buffer-name))
arg-tmp)
(let ((buffer-read-only nil))
(delete-region (or rbeg (point-min)) (point-max)))
(if (not method)
()
(setq arg-tmp mew-prog-imls-arg-list)
(setq mew-prog-imls-arg-list
(append '("--thread=yes" "--indent=2")
mew-prog-imls-arg-list)))
(mew-summary-scan-body mew-prog-imls
'mew-summary-mode
folder
mew-cs-scan
(mew-update-range))
(if (not method)
(message "Normal listing %s ... " folder)
(setq mew-prog-imls-arg-list arg-tmp)
(message "Thread listing %s ... " folder)))))
Mew-dist メーリングリストの案内