Commit 13afd560 authored by Tassilo Horn's avatar Tassilo Horn Committed by Katsumi Yamaoka
Browse files

Gnus: Add option to sort threads non-recursively

gnus-sum.el (gnus-sort-threads-recursively): New defcustom.
(gnus-sort-threads): Use it.
gnus.texi (Sorting the Summary Buffer): Document new defcustom `gnus-sort-threads-recursively'.
parent fec92060
2013-07-26 Tassilo Horn <>
* gnus.texi (Sorting the Summary Buffer): Document new defcustom
2013-07-25 Glenn Morris <>
......@@ -7394,6 +7394,11 @@ say something like:
@end lisp
By default, threads are sorted recursively, that is, first the roots,
then all subthreads, and so on. If you feel more like sorting only
the roots, so that inside a thread the original chronological order is
retained, you can set @code{gnus-sort-threads-recursively} to nil.
@vindex gnus-thread-score-function
The function in the @code{gnus-thread-score-function} variable (default
@code{+}) is used for calculating the total score of a thread. Useful
2013-07-26 Tassilo Horn <>
* gnus-sum.el (gnus-sort-threads-recursively): New defcustom.
(gnus-sort-threads): Use it.
2013-07-25 Andreas Schwab <>
* gnus-art.el (gnus-button-url-regexp): Make it match url in which
......@@ -847,6 +847,13 @@ controls how articles are sorted."
(function :tag "other"))
(boolean :tag "Reverse order"))))
(defcustom gnus-sort-threads-recursively t
"If non-nil, `gnus-thread-sort-functions' are applied recursively.
Setting this to nil allows sorting high-score, recent,
etc. threads to the top of the summary buffer while still
retaining chronological old to new sorting order inside threads."
:group 'gnus-summary-sort
:type 'boolean)
(defcustom gnus-thread-sort-functions '(gnus-thread-sort-by-number)
"*List of functions used for sorting threads in the summary buffer.
......@@ -4876,9 +4883,11 @@ If LINE, insert the rebuilt thread starting on line LINE."
(gnus-message 8 "Sorting threads...")
(condition-case nil
(let ((max-lisp-eval-depth (max max-lisp-eval-depth 5000)))
threads (gnus-make-sort-function gnus-thread-sort-functions)))
(let ((max-lisp-eval-depth (max max-lisp-eval-depth 5000))
(sort-func (gnus-make-sort-function gnus-thread-sort-functions)))
(if gnus-sort-threads-recursively
(gnus-sort-threads-recursive threads sort-func)
(sort threads sort-func)))
;; Even after binding max-lisp-eval-depth, the recursive
;; sorter might fail for very long threads. In that case,
;; try using a (less well-tested) non-recursive sorter.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment