gravatar.elをbbdbでも使いたい


ここのところ、bbdbなどwanderlust関連の設定をやっていまして、そういったことをtwitterでつぶやいていましたところ、gravatar.elなるものがあることを教えてもらいました。

@myuhe あと、https://github.com/dabrahams/wl-gravatar みたいなの利用したりするですFri May 20 12:17:29 via Afficheur for Mac

gravatarは、アイコンとE-mailを紐づけているwebサービス。gtihubやDISQUSもgravatarからアイコンを持ってきてるみたいです。 gravatar.elはEmacsのMUAで受信メールを表示している時にそのアイコンを表示してくれるもので、GNUSやwanderlustに対応しているようです。

https://cacoo.com/api/v1/diagrams/TiwovYL3X1hUhZ4D-5A314.png

EmacsのMUAは地味でついしょんぼりしてしまうので、こういう画像があるだけでちょっとだけ心がウキウキします。 せっかくなので、先日導入したbbdbを表示した時にもこの画像が表示されるようにしてみました。 先程のリンク先にあるwl-gravatar.elのコメントを参考にgravatar.elをインストールしたら、次のようなコードを貼り付けます。bbdbの関数を上書きするという行儀の悪さが際立ちますが勘弁してください。

(defun bbdb-format-record-name-company (record)
  "Display nam
e, company and picture.
Override function defined in bbdb.el."
  (let ((name (or (bbdb-record-name record) "???"))
        (company (bbdb-record-company record))
        (start (point))
        (net (car (bbdb-record-net record))))
    (message "net %s" net)
    (insert name)
    (put-text-property start (point) 'bbdb-field '(name))
    (when (stringp net)
      (gravatar-retrieve
       net
       (lambda (image buffer)
         (unless (eq image 'error)
           (with-current-buffer buffer
             (insert " ")
               (insert-image image))));)
       `(,(current-buffer))))
    (when company
      (insert " - ")
      (setq start (point))
      (insert company)
      (put-text-property start (point) 'bbdb-field '(company)))))

モザイクだらけでアレですが、恐らく次のような感じになると思います。

https://cacoo.com/api/v1/diagrams/TiwovYL3X1hUhZ4D-0A25F.png

X-Faceは今

bbdbを調べている時にX-Faceというものをを知りました。今はあまり使われていないようですが。

X-Face – Wikipedia

gravatar.elはまさに現代版X-Faceって感じです。実はこっそり受信メールのX-Faceを収集しているのですが、今だにX-Faceのついたメールが来ません。。。