[mew-dist 18564] Re: fancy-thread and scan-form

Takashi P.KATOH p-katoh at example.com
2001年 8月 21日 (火) 10:30:18 JST


From: SUGIMORI (杉森 隆行) <taro at example.com>
Subject: [mew-dist 18561] Re: fancy-thread and scan-form
Date: Mon, 20 Aug 2001 20:16:57 +0900 (JST)
>>> :::Thread 表示の時
>>>     4  08/07   1k "Momoko Ono" < プレゼン&のみかい
>>>     5  08/07   1k Hideo Sato┗/佐  Re: プレゼン&のみかい
>>> 
...
> (setq mew-thread-column 34)	← 数字は自分の環境に合わせて

これって、人間が計算して設定すべきものと違うような気がします。
ということで、場所を指示できるようにするためのパッチです。


(setq mew-scan-form
      '(type (5 date) " " (18 from) " " col (0 subj)))

のようにスレッドで段付けしたい位置に `col' を入れると、その
場所を計算してそれを mew-thread-column のかわりに使います。


優先順位は
(1) mew-scan-form-list の中で明示的に指定されていればそれ
(2) mew-scan-form-list or mew-scan-form に col があればその
    場所
(3) mew-thread-column の値
になります。

-- 
かとぺ / 加藤 貴司
不許全文引用

-------------- next part --------------
--- mew-cvs/mew-scan.el	Mon Aug 20 13:32:18 2001
+++ mew-scan.el	Tue Aug 21 10:18:55 2001
@@ -313,7 +313,11 @@
 		(throw 'loop (setq ret values))))))))
     (cond
      (column
-      (if (and ret (numberp (nth 1 ret))) (nth 1 ret) mew-thread-column))
+      ;; mew-scan-form-list-list > sep > mew-thread-column
+      (if (and ret (numberp (nth 1 ret))) (nth 1 ret)
+	(or 
+	 (mew-scan-thread-column (if ret (nth 0 ret) mew-scan-form))
+	 mew-thread-column)))
      (t
       (if ret
 	  (setq form (nth 0 ret))
@@ -328,6 +332,25 @@
   (if (integerp (car form))
       (cons (list (car form) 'num) (cons 'mark (cdr form)))
     (append mew-scan-form-header form)))
+
+(defun mew-scan-thread-column (scan-form)
+  "Return the position of `col' in SCAN-FORM, or nil if not found."
+  (let ((form (mew-summary-final-scan-form scan-form))
+	col (thread-col 0) found)
+    (while (and form (not found))
+      (setq col  (car form))
+      (setq form (cdr form))
+      (if (eq col 'col)
+	  (setq found t)
+	(setq thread-col
+	      (+ thread-col
+		 (cond
+		  ((listp col)   (abs (car col)))
+		  ((stringp col) (length col))
+		  ;; assume the length of solely specified
+		  ;; symbol (type, mark etc.) is 1.
+		  (t             1))))))
+    (if found thread-col nil)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;


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