[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.1.3 メッセージの動的な変更

wl-draft-config-alist を設定すると、ヘッダやその他の情報に基づい て、自動的に他のヘッダや本文を変更することができます。

変数 wl-draft-config-alist について説明します。この変数の初期設定 は nil です。

例えば以下のように設定すると、wl-draft-send-and-exitwl-draft-send を実行した時にヘッダが変更されます。 wl-interactive-send を non-nil に設定しておくと、送信前に変更点が 確認できるので安心です。

 
(setq wl-draft-config-alist
      '(((string-match "aaa\\.example\\.com$" (system-name))
         ;; 式がnon-nilなら適用する
         (wl-smtp-posting-server . "mailserver-B")
         (wl-nntp-posting-server . "newsserver-B")
         ;; 一時的な変数の設定
         )
        ("^To: .*user@aaa\\.bbb\\.example\\.com"
         ;; ドラフトバッファのヘッダにマッチすれば適用する
         ("Organization" . (format "Go %s" my-webpage)))
                           ;; elisp 式が書ける (eval しているだけ)
         (top . "  ○○です。\n")    ;; 本文先頭へ文字列を挿入します
         (bottom . "\n以上です。\n") ;; 本文末尾へ文字列を挿入します
        ))

wl-draft-config-alist は次の形式になっています。

 
'((ヘッダの正規表現 または elisp式
   ("Field" . 値(elisp式))
   (variable . 値(elisp式))
   (サブ関数 . 値(elisp式))
   関数
   ...)
  (ヘッダの正規表現 または elisp式
   ("Field" . 値(elisp式))
   ...))

[サブ関数]には、デフォルトで以下の13個を用意しています。

 
'header:      ヘッダの末尾に指定した文字列を挿入します。
'header-top:  ヘッダの先頭に指定した文字列を挿入します。
'header-file: ヘッダの末尾に指定したファイルを挿入します。
'x-face:      指定したファイルの内容を持つ `X-Face:' フィールドを
              挿入します。
'top:         本文の先頭に指定した文字列を挿入します。
'top-file:    本文の先頭に指定したファイルを挿入します。
'body:        本文を指定した文字列に置き換えます。
              nil を指定すると本文の文字列を削除します。
'body-file:   本文を指定したファイルの内容で置き換えます。
'bottom:      本文の末尾に指定した文字列を挿入します。
'bottom-file: 本文の末尾に指定したファイルを挿入します。
'part-top:    現在のマルチパートの先頭に指定した文字列を挿入します。
'part-bottom: 現在のマルチパートの末尾に指定した文字列を挿入します。
'template:    指定したテンプレートを適用します。
              (次項 テンプレートの挿入参照)

また、これらを定義しているのは wl-draft-config-sub-func-alist で あり、定義を変更したり自分で作った関数を追加することができます。関数の書 き方はここで説明するより直接コードを見た方が分かりやすいでしょうから、省 略します。

各要素の1番目には ヘッダの正規表現 か elisp 式 を指定します。elisp 式の場合は評価した値が non-nil の場合に適用されます。

また、デフォルトでは複数の要素がマッチまたは non-nil になった場合に、その 全てが適用されます。ここで、変数 wl-draft-config-matchonet にしてあれば、最初にマッチした1つだけを適用することもできます。

要素の2番目には cons か関数の list を指定します。cons にはヘッダの Field か変数、サブ関数を指定します。Field を指定した場合はその Field を変更し、 変数を指定した場合は一時的にその変数値を変更します。

値には文字列や変数の他、elisp式をそのまま記述することもできます。もし、 Field の値が nil ならばその Field を削除します。

つづいて、次の例を見て下さい。

 
(setq wl-draft-config-alist
      '((reply                         ;; (1)
         "X-ML-Name: \\(Wanderlust\\|emacs-mime-ja\\|apel-ja\\)"
         ;; 返信元バッファのヘッダにマッチすれば適用する
         (body . "  こんにちは\n")
         (template . "default")
         )))

この例 (1)のように、ヘッダの正規表現の前に reply をつけると wl-summary-reply などでドラフトを作成した場合、返信元のヘッダにマッ チすれば適用されるようになります。ただし、wl-draft を実行したとき など返信元のバッファがない場合は無視されます。

親フォルダの名前を利用したい場合には、バッファローカル変数 wl-draft-parent-folder を利用できます。次の例では、ドラフトを開く時に 居たサマリバッファのフォルダ名によって From を変更します。

 
(setq wl-draft-config-alist
      '(((string-match \".*@domain1$\" wl-draft-parent-folder)
         (\"From\" . \"user@domain1\"))
        ((string-match \".*@domain2$\" wl-draft-parent-folder)
         (\"From\" . \"user@domain2\"))))

何も特別な設定をしなければ、wl-draft-config-alist は、 wl-draft-send-and-exitwl-draft-send が実行される直前に 一度だけ適用されます。送信を取りやめた後に再度 wl-draft-config-alist を適用したい場合は、C-c C-e (wl-draft-config-exec) を実行してください。

wl-draft-send-and-exitwl-draft-send の実行時に自動的に wl-draft-config-alist を適用したくない場合は、次のように設定して 下さい。

 
(remove-hook 'wl-draft-send-hook 'wl-draft-config-exec)

ドラフトバッファの作成時に自動的に wl-draft-config-alist を適用したい場合は、次のように設定します。

 
(add-hook 'wl-mail-setup-hook 'wl-draft-config-exec)

サマリモードから 'E'(wl-summary-reedit)を押してメールを 編集する時にも自動的に wl-draft-config-alist を適用したい場合は、 次のように設定します。

 
(add-hook 'wl-draft-reedit-hook 'wl-draft-config-exec)



This document was generated by Yuuichi Teranishi on February, 19 2005 using texi2html