« インフルエンザ | Main | またおちた »

2007年12月 8日

wl-user-mail-address-regexp

[ カテゴリ: Emacsen ]

Wanderlustでは一般的にwl-user-mail-address-listに自分のメールアドレスを列挙します。しかし、plusなんかを使っているとこれでは対応しきれないので、wl-user-mail-address-regexpを使うことになります。これもリストにして欲しいんだけどな…

さて、これはこれでいいんですけど、replyするときに届いたメールに基づいてFromを変える、なんていう器用なことがとてもしにくい。これをなんとかしましょう、です。

この辺のコードは結構混沌としてるんですが、まあ以下の感じ。

(defun wl-summary-user-mail-address ()
  (save-excursion
    (catch 'user-mail-address
      (when (buffer-live-p reply-buf)        
        (set-buffer reply-buf)
        (mapc
         (lambda (address)
           (when (wl-address-user-mail-address-p address)
             (throw 'user-mail-address address)))
         (append (wl-parse-addresses (std11-field-body "From"))
                 (wl-parse-addresses (std11-field-body "To"))
                 (wl-parse-addresses (std11-field-body "Cc")))))
      wl-from)))

(setq wl-draft-config-alist
      '((t
         ("From" . (wl-summary-user-mail-address)))
	;; あとはふつう通りお好みで
	))

;; draft bufferの生成時にconfig-alistを処理
;; このタイミングじゃないとreply-bufは見えないので実は必須
(add-hook 'wl-mail-setup-hook
          (lambda ()
             (unless wl-draft-reedit
               (wl-draft-config-exec wl-draft-config-alist))))

もうちょっときれいにできそうだけどね。

追記

初出のコードでは、新規メール作成のときにエラーになってましたので、なおしました。

Comments

Post a comment




Remember Me?