[mew-dist 24486] scan-form with (0 subj) (0 body)

Shun-ichi TAHARA ( 田原 俊一 ) jado at example.com
2004年 2月 2日 (月) 15:32:58 JST


Mew4 で summary を塗ってみると、大昔の MH-e のデフォルトのように、body
が詰め込まれた表示も悪くないな、と思い、

(setq mew-use-spc-padding nil)
(setq mew-summary-form
      '((5 date) type "[" (14 from) "] " t (0 subj) " 《" (0 body)))

のように設定してみたところ、body 部が派手に溢れてしまいます(右寄せと判
断されてるのかな)。

実害はないといえばないのですが、ごく簡単な対策パッチです(mew-4.0.63 用)。

ただ、これでも、Subject の時点で溢れていると、" 《" が付いてしまってや
はり溢れます。

また、上記設定だと、Subject と Body が十分に短いと、カーソル行アンダー
ラインやマウスハイライト等が短くなってしまうので、

(setq mew-use-spc-padding t)
(setq mew-summary-form
      '((5 date) type "[" (14 from) "] " t (-1 subj) " 《" (0 body)))

として逃げてみる、という技もありますが、この場合も Subject が全桁出て
きてしまうので、Subject が長いと溢れています。

以上を考えると、

1. (0 element) の時は、幅を計算せずにとりあえず全部くっつけさせておく
2. mew-scan-get-line でまとめて mew-substring する

とするのがいいのかも、とも思いましたが、ちょっとだけ遅くなりそうですね。
# mew-scan-get-piece の各所でまじめに幅計算すべきか…
_______________________________
田原 俊一   jado at example.com, shunichi_tahara at example.com
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
-------------- next part --------------
diff -ru mew-4.0.63.orig/mew-scan.el mew-4.0.63/mew-scan.el
--- mew-4.0.63.orig/mew-scan.el	2003-12-29 11:44:22.000000000 +0900
+++ mew-4.0.63/mew-scan.el	2004-02-02 15:04:53.000000000 +0900
@@ -280,6 +280,8 @@
       (when (and (integerp width) (symbolp func))
 	(when (= width 0)
 	  (setq width (- WIDTH TOTAL 1))
+	  (if (< width 0)
+	      (setq width 0))
 	  (unless mew-use-spc-padding
 	    (setq nopad t)))
 	(if (< width 0) (setq width (abs width) rightp t))
@@ -293,7 +295,10 @@
 		  (format (format "%%%ds" width) str)
 		(setq TOTAL (+ (- TOTAL width) (string-width str)))
 		str) ;; width may exceed.
-	    (mew-substring str width nil nopad)))))))
+	    (setq str (mew-substring str width nil nopad))
+	    (if nopad
+		(setq TOTAL (+ (- TOTAL width) (string-width str))))
+	    str))))))
 
 (defun mew-scan-get-line (mew-vec WIDTH)
   (let* ((TOTAL 0) (fld "")


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