[Mew-dist 17735] Re: replyで宛先に名前を残す方法
Shun-ichi GOTO
gotoh at example.com
2001年 6月 9日 (土) 03:37:29 JST
>>>>> at Fri, 8 Jun 2001 22:58:51 +0900
>>>>> kazu == Kazu Yamamoto (山本和彦) <kazu at example.com> said,
> 返事が遅くなりましたが,下記ありがとうございました.
> で,ついでで恐縮ですが,Mewでこのような仕様になっているのは
> 何か理由があるのでしょうか?
kazu> この部分は RFC に違反した書式で送られてくることが多く、そのままコピー
kazu> すると Mew が生成するメールが RFC に違反するという事態に陥ります。一応、
kazu> これを回避するアイディアはあるのですが、まだ実装していません。
RFC違反の件もわかるのですが、やるならばそういう方法ではなく、reply draft
作成時にM-C-iにて個別expandしなくても全てのアドレスを自動でexpandする機
能(自動/手動)があるほうが嬉しいかと思います。
というのも、To:やCc:での名前部分(phrase)は、例えば
"後藤 様" <gotoh at example.com>とか、
"しゅんちゃん" <gotoh at example.com> などと、
一般向けでない書かれ方をすることも多く、reply時に元メールのソレを
そのままひっぱってきてしまうのはあまり嬉しくないと思うからです。
実はずいぶん以前にそういう機能(+α)のcodeは書いて使っていたのですが、
いまでは関数もすっかり代わってしまい、そのままでは動きませんでした。
でも、せっかくなのでちょっと作り直してみました。
mew-draft-expand-all というコマンドです。
これはTo:およびCc:のアドレスを取得して、addrbook の情報を元に
expandしたもので置き換える、というものです。
(defun mew-draft-expand-all ()
"Expand addresses in To: and Cc:.
Address is expanded with method given by
`mew-addrbook-for-address-expansion'. See also `mew-draft-expand'."
(interactive)
;; We assume, in draft buffer
(save-excursion
(let ((fields (list mew-to: mew-cc:)) ; expand To: and Cc:
(func (mew-addrbook-func mew-addrbook-for-address-expansion))
value mailbox addrl wid)
(when func
(while fields
(setq addrl (mew-header-parse-address-list2 (list (car fields))))
(when addrl
;; At first, make one address
(setq value (mew-addrstr-expand (car addrl) func)
addrl (cdr addrl)
wid (+ (string-width (car fields))
1
(string-width value)))
(while addrl
(setq mailbox (mew-addrstr-expand (car addrl) func))
(if (< (+ wid (string-width mailbox) 1)
mew-field-max-length)
;; not fold
(setq value (concat value ", " mailbox)
wid (string-width value))
;; fold
(setq value (concat value ",\n\t" mailbox)
wid (+ tab-width (string-width mailbox))))
(setq addrl (cdr addrl)))
(mew-header-replace-value (car fields) value))
(setq fields (cdr fields))))
(mew-highlight-header))))
これを
(add-hook 'mew-draft-mode-newdraft-hook 'mew-draft-expand-all)
することで樋口さんの要望は満たせるかとおもいます。
## あるいは、mew-draft-expand-address-when-prepared
## などというカスタマイズ変数(デフォルトはnil)を用意して、
## mew-summary-reply<f>にて処理するか。
draft-mode にてなにかのキーに当てて手動で行うのも良いかも
候補はなんだろう、、、C-c M-i とか? C-c X とか?
P.S.
上記コードは mew-header-fold-regionを使いませんでした。
なんか、意味不明な仕様/動きです。
limit として比較しているmew-field-max-length はbytesなのか
widthなのかわからない。medの意図はわかれども不要に思うこと。
regionでなくて、current-fieldでいいんじゃないの?とおもうこと。
など。
--- Regards,
Shun-ichi Goto <gotoh at example.com>
R&D Group, TAIYO Corp., Tokyo, JAPAN
Mew-dist メーリングリストの案内