[Mew-dist 07903] Re: Change From: according to Config
OBATA Noboru
obata at example.com
1999年 3月 5日 (金) 17:09:33 JST
小幡です。
>> In message <19990305152007V.shunichi_tahara at example.com>,
>> Shun-ichi TAHARA (田原 俊一) <jado at example.com> writes:
> この場合、draftを作るときにmew-config-imgetと同じ値のcaseを挿入しておい
> て、その他のものはどこかで推測するようにする、というのが、私の希望にもっ
> ともかなっているかも。
>
> となると、[Mew-dist 07888]の小幡さんの布教に引っかかるのが幸せかしら :-)
ヘッダ推測して置換する文字列に、変数や関数も記述できるようにする
パッチを添付します。ちょっと汚いですが。[Mew-dist 07793] の後に
当ててお試し下さい。これを当てると
(setq mew-draft-guess-header-alist
'(("Config:"
(t mew-config-imget))
("From:"
("Config:"
("config1" "header-for-config1")
("config2" "header-for-config2"))
(t user-mail-address))
))
のように書くことができます。ヘッダ推測は上から順にやるので、まず
Config: が決まれば、その下で Config: を基に推測させることができ
ます。
# まだ試行錯誤 :-)
--
小幡 昇 (obata at example.com)
-------------- next part --------------
--- mew-header.el.orig Fri Mar 5 16:03:11 1999
+++ mew-header.el Fri Mar 5 16:06:23 1999
@@ -137,17 +137,26 @@
(defun mew-header-replace-value (field value ask)
"Replace header contents."
(interactive)
- (let ((oldvalue (mew-header-get-value field)))
- (if (and (not (string= oldvalue value))
+ (let ((oldvalue (or (mew-header-get-value field) ""))
+ (newvalue (cond
+ ((null value) "")
+ ((stringp value) value)
+ ((functionp value) (funcall value))
+ ((symbolp value)
+ (if (fboundp value) (funcall value)
+ (if (and (boundp value)
+ (stringp (symbol-value value)))
+ (symbol-value value))))
+ (t ""))))
+ (if (and (not (string= oldvalue newvalue))
(or (not ask)
(y-or-n-p
(format "Replace %s value with %s? "
- field value))))
+ field newvalue))))
(progn
(mew-header-delete-lines (list field))
- (if (not (mew-header-existp field))
- (goto-char (mew-header-end)))
- (mew-draft-header-insert field value)))))
+ (goto-char (mew-header-end))
+ (mew-draft-header-insert field newvalue)))))
(defun mew-header-append-value (field value pos ask &optional sep)
"Append string to header contents.
@@ -162,15 +171,25 @@
contents of FIELD if necessary (both SEP is non-nil and original
contents of FIELD is non-empty)."
(interactive)
- (let ((oldvalue (mew-header-get-value field)) newvalue)
- (if (and oldvalue sep)
+ (let ((oldvalue (or (mew-header-get-value field) "")) newvalue
+ (str (cond
+ ((null value) "")
+ ((stringp value) value)
+ ((functionp value) (funcall value))
+ ((symbolp value)
+ (if (fboundp value) (funcall value)
+ (if (and (boundp value)
+ (stringp (symbol-value value)))
+ (symbol-value value))))
+ (t ""))))
+ (if (and (< 0 (length oldvalue)) sep)
(cond
((equal pos 'bol)
- (setq newvalue (concat value sep oldvalue)))
+ (setq newvalue (concat str sep oldvalue)))
;;((equal pos 'eol)
(t
- (setq newvalue (concat oldvalue sep value))))
- (setq newvalue (concat oldvalue value)))
+ (setq newvalue (concat oldvalue sep str))))
+ (setq newvalue (concat oldvalue str)))
(mew-header-replace-value field newvalue ask)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Mew-dist メーリングリストの案内