[mew-dist 27782] Re: "_"

KOIE Hidetaka ( 鯉江英隆 ) hide at example.com
2007年 8月 8日 (水) 21:43:06 JST


flowedのメイルに対する返信がflowedにならないとうれしくない気がしますが、
RFCをみると予想外に細かいルールがあって実装は断念しました。
他のメーラーはどうなっているかで試してみたところ
Operaはflowedになりませんでした。がっくり。
#他のは試していません

自分で書けそうなところで、
引用符を ">" から好きな文字列に変換する機能をつけてみました。
最初、text-propertyかoverlayをつかって
スクリーン上の変換にとどめようとしたのですが、
うまくゆかなかったのでバッファを書き換えてしまっています。
なので "A" で返信するときは
"," でflowedの処理なしで表示してからがよいとおもいます。

それと、まだRFCは半分くらいしか読めていないのですが
DASH DASH SP はfixedとしてあつかうとか
>From は引用としてあつかわないようにとかあるようです。

Index: mew-decode.el
===================================================================
RCS file: /cvsmew/mew/mew-decode.el,v
retrieving revision 1.94
diff -u -p -r1.94 mew-decode.el
--- mew-decode.el	6 Aug 2007 03:56:21 -0000	1.94
+++ mew-decode.el	8 Aug 2007 12:19:17 -0000
@@ -712,6 +712,31 @@ Return a part syntax after moving the be
    ((looking-at "^$") -1)
    ((looking-at "^>*") (- (match-end 0) (match-beginning 0)))))
 
+;;KOIE
+(defvar mew-excerpt-decoration mew-cite-prefix)
+(defun mew-decorate-excerpt ()
+  (beginning-of-line)
+  (while (char-equal (char-after) ?>)
+    (delete-char 1)
+    (insert mew-excerpt-decoration)))
+;;失敗
+;;(defun mew-decorate-excerpt ()
+;;  (beginning-of-line)
+;;  (while (char-equal (char-after) ?>)
+;;    (text-property (point) (1+ (point)) 'display mew-excerpt-decoration)))
+;;失敗2
+;;(defun mew-decorate-excerpt ()
+;;  (beginning-of-line)
+;;  (while (char-equal (char-after) ?>)
+;;    (let ((ov (make-overlay (point) (1+ (point)))))
+;;      (overlay-put ov 'mew-xxx t)
+;;      (overlay-put ov 'after-string mew-excerpt-decoration)
+;;      (overlay-put ov 'invisible t)
+;;      (overlay-put ov 'evaporate t)
+;;      )
+;;    (goto-char (1+ (point)))))
+;;失敗の原因: current-bufferがcacheでメッセージバッファに転写するときに情報が落ちるからか?
+
 (defun mew-decode-flowed (beg end delsp)
   "Decoding wrapped lines encoded with RFC 3676"
   (save-restriction
@@ -720,9 +745,11 @@ Return a part syntax after moving the be
     (let ((adj (if delsp 2 1))
 	  (level (mew-decode-flowed-level))
 	  next-level softbreak)
+      (mew-decorate-excerpt) ;KOIE
       (end-of-line)
       ;; char-before causes an error at the beginning of buffer
       (if (and (not (bobp)) (= (char-before) mew-sp))
+          ;; KOIE: should check ^-- $
 	  (setq softbreak (1+ (point)))
 	(setq softbreak nil))
       (while (= (forward-line) 0)
@@ -735,6 +762,7 @@ Return a part syntax after moving the be
 	      (delete-char 1))
 	    (while (char-equal (char-after) mew-sp)
 	      (delete-char 1))))
+        (mew-decorate-excerpt) ;KOIE
 	(end-of-line)
 	(if (= (char-before) mew-sp)
 	    (setq softbreak (1+ (point)))

--
KOIE Hidetaka <hide at example.com>



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