# HG changeset patch # User Miles Bader # Date 1210240786 0 # Node ID e6e8d9b7ab7d2164986bed64d4955d8e0f133cba # Parent 20c9a140eae2f6e815af546cdd9a3d62d5e715ec Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1149 diff -r 20c9a140eae2 -r e6e8d9b7ab7d lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Thu May 08 05:40:55 2008 +0000 +++ b/lisp/gnus/ChangeLog Thu May 08 09:59:46 2008 +0000 @@ -3,6 +3,24 @@ * gnus-art.el (gnus-article-toggle-truncate-lines): Don't use `iff' in docstring. +2008-05-07 Teodor Zlatanov + + * 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 + + * 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 * gnus-srvr.el (gnus-enter-server-buffer): Make sure the server-buffer diff -r 20c9a140eae2 -r e6e8d9b7ab7d lisp/gnus/gnus-registry.el --- a/lisp/gnus/gnus-registry.el Thu May 08 05:40:55 2008 +0000 +++ b/lisp/gnus/gnus-registry.el Thu May 08 09:59:46 2008 +0000 @@ -1,10 +1,10 @@ ;;; 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 -;; Keywords: news +;; Keywords: news registry ;; This file is part of GNU Emacs. @@ -523,7 +523,8 @@ ;; 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 @@ -678,9 +679,8 @@ (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)) @@ -730,15 +730,13 @@ (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. diff -r 20c9a140eae2 -r e6e8d9b7ab7d lisp/gnus/gnus-util.el --- a/lisp/gnus/gnus-util.el Thu May 08 05:40:55 2008 +0000 +++ b/lisp/gnus/gnus-util.el Thu May 08 09:59:46 2008 +0000 @@ -193,6 +193,15 @@ (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."