emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 624c861 2/2: Refactor gnus-article-sort-by-*


From: Lars Ingebrigtsen
Subject: master 624c861 2/2: Refactor gnus-article-sort-by-*
Date: Mon, 21 Jun 2021 08:35:57 -0400 (EDT)

branch: master
commit 624c8613e791fb5134bf9c02ebd9b5755802e4f6
Author: Alex Bochannek <alex@bochannek.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Refactor gnus-article-sort-by-*
    
    * lisp/gnus/gnus-sum.el (gnus-article-sort-extract-extra): New
    function (bug#49081).
    (gnus-article-sort-by-recipient): Use it.
    (gnus-article-sort-by-newsgroups): Ditto.
---
 lisp/gnus/gnus-sum.el | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 908c10c..4bdc202 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -5083,17 +5083,17 @@ using some other form will lead to serious barfage."
   (gnus-article-sort-by-author
    (gnus-thread-header h1)  (gnus-thread-header h2)))
 
+(defsubst gnus-article-sort-extract-extra (name header)
+  (let ((extract
+        (funcall gnus-extract-address-components
+                 (or (cdr (assq name (mail-header-extra header)))
+                     ""))))
+    (or (car extract) (cadr extract))))
+
 (defsubst gnus-article-sort-by-recipient (h1 h2)
   "Sort articles by recipient."
-  (gnus-string<
-   (let ((extract (funcall
-                  gnus-extract-address-components
-                  (or (cdr (assq 'To (mail-header-extra h1))) ""))))
-     (or (car extract) (cadr extract)))
-   (let ((extract (funcall
-                  gnus-extract-address-components
-                  (or (cdr (assq 'To (mail-header-extra h2))) ""))))
-     (or (car extract) (cadr extract)))))
+  (let ((ex (lambda (h) (gnus-article-sort-extract-extra 'To h))))
+    (gnus-string< (funcall ex h1) (funcall ex h2))))
 
 (defun gnus-thread-sort-by-recipient (h1 h2)
   "Sort threads by root recipient."
@@ -5188,15 +5188,9 @@ Unscored articles will be counted as having a score of 
zero."
   "Sort threads such that the thread with the most recently dated article 
comes first."
   (> (gnus-thread-latest-date h1) (gnus-thread-latest-date h2)))
 
-(defun gnus-article-sort-by-newsgroups (h1 h2)
+(defsubst gnus-article-sort-by-newsgroups (h1 h2)
   "Sort articles by newsgroups."
-  (let ((ex
-         (lambda (h)
-           (let ((extract
-                  (funcall gnus-extract-address-components
-                          (or (cdr (assq 'Newsgroups (mail-header-extra h)))
-                               ""))))
-             (or (car extract) (cadr extract))))))
+  (let ((ex (lambda (h) (gnus-article-sort-extract-extra 'Newsgroups h))))
     (gnus-string< (funcall ex h1) (funcall ex h2))))
 
 (defun gnus-thread-sort-by-newsgroups (h1 h2)
@@ -5204,7 +5198,6 @@ Unscored articles will be counted as having a score of 
zero."
   (gnus-article-sort-by-newsgroups
    (gnus-thread-header h1) (gnus-thread-header h2)))
 
-
 ; Since this is called not only to sort the top-level threads, but
 ; also in recursive sorts to order the articles within a thread, each
 ; article will be processed many times.  Thus it speeds things up



reply via email to

[Prev in Thread] Current Thread [Next in Thread]