* gnus-art.el (gnus-article-toggle-truncate-lines):
Don't use `iff' in docstring.
+2008-05-07 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-registry.el: Adjusted copyright dates and added a keyword.
+
+ * gnus-util.el (gnus-extract-address-component-name)
+ (gnus-extract-address-component-email): Convenience functions around
+ `gnus-extract-address-components'.
+
+ * gnus-registry.el (gnus-registry-split-fancy-with-parent): Use
+ `gnus-extract-address-component-email' to fix bug of comparing full
+ sender name to `user-mail-address'.
+
+2008-05-05 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-registry.el (gnus-registry-grep-in-list): Fix logic, use
+ catch/throw to optimize.
+ (gnus-registry-find-keywords): Just use member to find a keyword.
+
2008-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
* gnus-srvr.el (gnus-enter-server-buffer): Make sure the server-buffer
;;; gnus-registry.el --- article registry for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+;;; Free Software Foundation, Inc.
;; Author: Ted Zlatanov <tzz@lifelogs.com>
-;; Keywords: news
+;; Keywords: news registry
;; This file is part of GNU Emacs.
;; else: there were no matches, now try the extra tracking by sender
((and (gnus-registry-track-sender-p)
sender
- (not (equal sender user-mail-address)))
+ (not (equal (gnus-extract-address-component-email sender)
+ user-mail-address)))
(maphash
(lambda (key value)
(let ((this-sender (cdr
(let (articles)
(maphash
(lambda (key value)
- (when (gnus-registry-grep-in-list
- keyword
- (cdr (gnus-registry-fetch-extra key 'keywords)))
+ (when (member keyword
+ (cdr-safe (gnus-registry-fetch-extra key 'keywords)))
(push key articles)))
gnus-registry-hashtb)
articles))
(assoc article (gnus-data-list nil)))))
nil))
-;;; this should be redone with catch/throw
(defun gnus-registry-grep-in-list (word list)
- (when word
- (memq nil
- (mapcar 'not
- (mapcar
- (lambda (x)
- (string-match word x))
- list)))))
+"Find if a WORD matches any regular expression in the given LIST."
+ (when (and word list)
+ (catch 'found
+ (dolist (r list)
+ (when (string-match r word)
+ (throw 'found r))))))
(defun gnus-registry-do-marks (type function)
"For each known mark, call FUNCTION for each cell of type TYPE.
(match-end 0)))))
(list (if (string= name "") nil name) (or address from))))
+(defun gnus-extract-address-component-name (from)
+ "Extract name from a From header.
+Uses `gnus-extract-address-components'."
+ (nth 0 (gnus-extract-address-components from)))
+
+(defun gnus-extract-address-component-email (from)
+ "Extract e-mail address from a From header.
+Uses `gnus-extract-address-components'."
+ (nth 1 (gnus-extract-address-components from)))
(defun gnus-fetch-field (field)
"Return the value of the header FIELD of current article."