とりあえず暇だったし何となく始めたブログ このページをアンテナに追加 RSSフィード

UNIX 系企業のぺーぺー

2008/02/06

[][] Wanderlustで自分宛てのメールGMailのように「>」で強調する

GMailで言う自分宛てのメールであれば, メール一覧の画面で「>」のようなマークをつけてくれて一発で分かる機能を追加ってだけ.

Wanderlustでの唯一の不満点やった.

ちょっと調べて解決してみた.

コード

こんなコードを追記した.

ぐぐったらそれっぽいコードが出てきたんだけど, そのままじゃ上手く動かなかったので, 自分用に修正した.

dolistの部分でlistじゃねーぞって怒られたんだよね.

以下ので大丈夫なはず.

自分宛てのメアドが複数ある場合,

特にGMailで「アカウント名+〜@gmail.com」とか「アカウント名+〜@googlemail.com」とかの形式を使っているなら,

wl-user-mail-address-regexpの設定は必須.

;; 自分宛てのメアドを示す正規表現
(setq wl-user-mail-address-regexp
      "ほげほげ〜ふがふが〜")

;; 追記(ちょっと下)に修正版のコードがあります
;; ;; 自分宛てのメールであれば, 「>」を返す
;; (defun wl-summary-line-for-me ()
;;   (if (catch 'found
;;         (let ((to (elmo-message-entity-field wl-message-entity 'to))
;;               (cc (elmo-message-entity-field wl-message-entity 'cc)))
;;           (when (or (stringp to) cc)
;;             (setq to
;;                   (append (if (stringp to) (list to) to)
;;                           (when cc
;;                             (if (stringp cc) (list cc) cc)))))
;;           (dolist (i to)
;;             (when (wl-address-user-mail-address-p i)
;;               (throw 'found t)))))
;;       ">"
;;     ""))

;; 一覧表示での置き換え規則に追加
(add-to-list 'wl-summary-line-format-spec-alist
             '(?> (wl-summary-line-for-me))
             t)

;; 一覧のフォーマットに追加
(setq wl-summary-line-format "%n%T%P%1@%1>%M/%D(%W)%h:%m %t%[%17(%c %f%) %] %s")

これはあると意外と便利やと思う.

機能とは関係ないけど, catch〜throwって便利だねえ.

追記

あーちょっぴり修正.

自分宛てなのに何故か「>」がつかないなあってのがあって, 調べたら直せたので追記.

修正点は、eword-decode-stringとしてメールアドレスデコードしてる点.

これが無いと, たぶんマルチバイト文字が入ってるメールアドレス「ほげほげ <...@...>」のようなのは、

何らかの形式にエンコードされてて正規表現にマッチしなくなっちゃう.

(defun wl-summary-line-for-me ()
  (if (catch 'found
        (let ((to (elmo-message-entity-field wl-message-entity 'to))
              (cc (elmo-message-entity-field wl-message-entity 'cc)))
          (when (or (stringp to) cc)
            (setq to
                  (append (if (stringp to) (list to) to)
                          (when cc
                            (if (stringp cc) (list cc) cc)))))
          (dolist (i to)
            (when (wl-address-user-mail-address-p (eword-decode-string i))
              (throw 'found t)))))
      ">"
    ""))

いまのところこれでおkっぽいかな?

さらに追記

古いコードをいちおうコメントアウトしておいた.

参考

更新時刻

  • 1かいめ 2008年, 2月7日, 3:52
  • 2かいめ 2008年, 2月7日, 4:16
  • 3かいめ 2008年, 2月14日, 2:27

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/khiker/20080206/wanderlust