request a function to display records without updating

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 )



Lsdb-info メーリングリストの案内
Back to archive index