[Mew-dist 03838] visible headers (was Re: Mew-dist 03833)

Mito mit at example.com
1998年 2月 19日 (木) 10:42:24 JST


※ "冨" こと togashi at example.com さんの
   『[Mew-dist 03833] Re: to be visible X-Mew field.』からの引用です。

冨> デフォルトでみえるフィールドの件なんですが、最終的にはどのようなフィー
冨> ルドを残したほうがよいという結論になったのでしょうか(初心者うんぬんの
冨> 話も含めて)。

この件は、私としてはどうでもいいので、識者の方々のご意見に従
います。(_ _)

遅ればせながら b12 から b14 に ver-up したのですが、やはり
visible/invisible header の指定方法がとても分りにくいと思い
ました。

現在 mew-field-invisible という名称にもかかわらず、必ずしも
invisible にならないというのが問題なんだと思います。

私なりに考えてみましたが、
(1) mew-field-visible に指定されているものは表示する
(2) mew-field-invisible に指定されているものは表示しない
(3) どちらにも指定されているものは優先度を持たせる
(4) どちらにも指定されていないものは表示しない
とすれば比較的分りやすいのではないかと思います。

(3) の場合ですが、現在 mew-field-visible では部分一致を許し
ていませんが、これを許すようにして、一致した文字列が多いほう
を優先するというふうにしてみました。

例)
  visible: "X-Mailer"
  invisible: "X-"
  とした場合、"X-"で始まる field は表示しないが、"X-Mailer:"
  は表示する。

(4) でどちらにも指定されていないものを非表示にするというのが
嫌な場合は、mew-field-visile に "." を指定すればいいわけです
ので、問題ないと思います。

以上のような仕様にしてみましましたので、
mew-field-other-visible は必要なくなりましたので、なくしまし
た。

どうでしょう?
-- 
2/19 10:36頃
NECソフトウェア新潟  水戸
mailto:mit at example.com
-------------- next part --------------
--- mew-decode.el	1998/02/18 05:21:04	1.1
+++ mew-decode.el	1998/02/19 01:04:52
@@ -651,14 +651,26 @@
 ;;;
 
 (defun mew-make-field-regex (fields)
-  (mapconcat (function (lambda (x) (concat "^" x))) fields "\\|")
+  (mapconcat (function (lambda (x)
+			 (if (string-match "^\\^" x) x (concat "^" x))))
+	     fields "\\|")
   )
 
 (defun mew-field-make-regex ()
   (setq mew-field-visible-regex 
 	(mew-make-field-regex mew-field-visible))
   (setq mew-field-invisible-regex 
-	(mew-make-field-regex mew-field-invisible)))
+	(mew-make-field-regex mew-field-invisible))
+  (let ((vf mew-field-visible)
+	(ivf mew-field-invisible))
+    (while (car vf)
+      (if (string-match "^[^^]" (car vf))
+	  (setcar vf (concat "^" (car vf))))
+      (setq vf (cdr vf)))
+    (while (car ivf)
+      (if (string-match "^[^^]" (car ivf))
+	  (setcar ivf (concat "^" (car ivf))))
+      (setq ivf (cdr ivf)))))
 
 (mew-field-make-regex)
 
@@ -674,7 +686,8 @@
 	   (invisible-regex mew-field-invisible-regex)
 	   (visible (make-vector len nil))
 	   (case-fold-search t)
-	   (others nil) (key "") (line "") (beg nil) (n nil))
+	   (others nil) (key "") (line "") (beg nil) (n nil)
+	   visible-score invisible-score)
       (save-restriction
 	(narrow-to-region (point-min) (point))
 	(goto-char (point-min))
@@ -683,25 +696,30 @@
 	  (setq beg (match-beginning 0))
 	  (forward-line)
 	  (while (looking-at mew-lwsp) (forward-line))
-	  (if (and (string-match invisible-regex key)
-		   (not (string-match visible-regex key)))
+	  (if (string-match visible-regex key)
+	      (setq visible-score (match-end 0))
+	    (setq visible-score nil))
+	  (if (string-match invisible-regex key)
+	      (setq invisible-score (match-end 0))
+	    (setq invisible-score nil))
+	  (if (and invisible-score (not visible-score))
 	      ()
 	    (setq line (mew-buffer-substring beg (point)))
 	    (delete-region beg (point))
-	    (if (null (string-match visible-regex key))
+	    (if (or (not visible-score)
+		    (and invisible-score (> invisible-score visible-score)))
 		(setq others (concat others line))
-	      (setq n (mew-member-case-equal key mew-field-visible))
+	      (setq n (mew-member-match key mew-field-visible))
 	      (aset visible n (concat (aref visible n) line))
 	      ))
 	  ))
-      (and (not mew-field-other-visible) others (insert others))
+      (and others (insert others))
       (or nodisplay (recenter 0))
       (setq n 0)
       (while (< n len)
 	(if (aref visible n) (insert (aref visible n)))
 	(setq n (1+ n))
 	)
-      (and mew-field-other-visible others (insert others))
       )
     (mew-highlight-header-region (point-min) (point))
     (mew-highlight-x-face (point-min) (point))
--- mew-vars.el	1998/02/18 06:04:45	1.1
+++ mew-vars.el	1998/02/19 00:58:31
@@ -398,15 +398,9 @@
     "Resent-Sender:" "Resent-Reply-To:" "Delivery-Date:"
     "Delivered-To:" "Posted:" "In-Reply-To:" "References:"
     "Precedence:" "Lines:"
-    "X-.*" "From$")
+    "X-" "From$")
   "*These fields are hidden when a message is displayed over a message
 buffer. Back-scroll makes them visible.")
-
-(defvar mew-field-other-visible t
-  "*If *non-nil*, other fields than fields of mew-field-visible and
-that of mew-field-invisible are displayed after that of mew-field-visible.
-Otherwise, they are hidden over a message buffer. That is, 
-fields of mew-field-visible are visible only.")
 
 ;;
 ;; Draft mode


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