TSUCHIYA Masatoshi
tsuch****@namaz*****
2004年 1月 23日 (金) 12:45:39 JST
shimbun ライブラリ経由で,色々な Mailing List の archive を閲覧してい ると, このグループの記事から新たなアドレス情報は収集したくないけれど,既 に知っている人の記事だったら,その人の情報の表示だけを行って欲しい. と言う状況に出くわしました.ところが,これが結構な難物で,とりあえず下 のような定義でしのいでいます. で,どうしたら良いのかよく分かりませんが,例えば lsdb-update-records-and-display() を, ・現在の記事から送信者のアドレスを取り出す関数 ・見つかったアドレスに対応する record を取り出す関数 ・その record の更新を行う関数 ・その record の表示を行う関数 のように切り分けて貰えると助かるのですが.いかがでしょうか. (defun my-lsdb-gnus-update-record () (require 'lsdb) (with-current-buffer gnus-article-current-summary (unless (gnus-news-group-p gnus-newsgroup-name) (if (string-match "\\`nnshimbun\\+" gnus-newsgroup-name) (lsdb-display-without-update) (lsdb-update-records-and-display))))) (defun lsdb-display-without-update () (lsdb-maybe-load-hash-tables) (let (records) (save-restriction (std11-narrow-to-header) (dolist (address (nconc (lsdb-fetch-fields lsdb-sender-headers) (lsdb-fetch-fields lsdb-recipients-headers))) (setq address (funcall lsdb-decode-field-body-function (car (lsdb-extract-address-components (cdr address))) (car address))) (when address (let ((entity (lsdb-gethash address lsdb-hash-table))) (when entity (push (cons address entity) records)))))) (setq records (nreverse records)) (if lsdb-display-records-belong-to-user (if records (lsdb-display-record (car records)) (lsdb-hide-buffer)) (catch 'lsdb-show-record (while records (if (member user-mail-address (cdr (assq 'net (car records)))) (setq records (cdr records)) (lsdb-display-record (car records)) (throw 'lsdb-show-record t))) (lsdb-hide-buffer))))) -- 土屋 雅稔 ( TSUCHIYA Masatoshi )