[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 メーリングリストの案内