
(require (quote gnus))

(defun gnus-find-new-newsgroups nil "\
Look for new newsgroups and return names.
`-n' option of options line in .newsrc file is recognized." (byte-code "ÆÆÇ ÈÉ\"ˆÈÊ\"ˆËÌ\"ˆ	+‡" [group new-groups known-groups gnus-killed-assoc gnus-newsrc-assoc gnus-active-hashtb nil make-abbrev-table mapcar (lambda (group) (set (intern (car group) known-groups) t)) (lambda (group) (set (intern (car group) known-groups) t)) mapatoms (lambda (sym) (byte-code "Æ	!‰ˆ
?† Ç
\"?† … Ç\"…+ È\"?…+ B‰‡" [group sym gnus-newsrc-options-n-no gnus-newsrc-options-n-yes known-groups new-groups symbol-name string-match abbrev-expansion] 6))] 6))

(defun gnus-keyed-sort (list compare extract) "\
Sort LIST stably and return the sorted list.  Does not modify LIST.
Arguments are (LIST COMPARE EXTRACT).  Elements in the list are
compared as if the predicate were:
	(COMPARE (EXTRACT a) (EXTRACT b))
but EXTRACT is run over each element of the list in a preprocessing
stage for efficiency.  This reduces the number of EXTRACT calls from
O(N log N) to O(N).

Example: (gnus-keyed-sort load-path 'string< 'downcase)
" (byte-code "ÂÃ	\"ÄÅ\"‰ˆÂÆ\")‡" [keyed-list list mapcar (lambda (it) (cons (funcall extract it) it)) sort (lambda (a b) (funcall compare (car a) (car b))) (lambda (it) (cdr it))] 5))

(defun gnus-keyed-sort-headers (compare extract) "\
Sort current group's headers by COMPARE and EXTRACT.  Sorting is
done as if the predicate were
	(COMPARE (EXTRACT a) (EXTRACT b))
See 'gnus-keyed-sort for details.
Note: interrupting the sort leaves the headers unsorted.
" (setq gnus-newsgroup-headers (gnus-keyed-sort gnus-newsgroup-headers compare extract)))

(defun gnus-Subject-keyed-sort-subjects (compare extract &optional reverse) "\
Sort and redisplay the *Subject* buffer by COMPARE and EXTRACT.
Calls 'gnus-keyed-sort-headers to do the sorting.  Optional argument
REVERSE means to do an 'nreverse after sorting.
" (byte-code "Å Æ	
\"ˆ… Ç!‰ˆÈ ˆÉ!)‡" [current compare extract reverse gnus-newsgroup-headers gnus-Subject-article-number gnus-keyed-sort-headers nreverse gnus-Subject-prepare gnus-Subject-goto-subject] 6))

(defun gnus-Subject-sort-by-subject (reverse) "\
Sort *Subject* buffer by subject alphabetically.  Argument REVERSE
means reverse order.  \"Re:\"s are ignored.  If 'case-fold-search, then
case of letters will be ignored.
" (interactive "P") (byte-code "ÂÃƒ
 Ä‚ Å	#‡" [case-fold-search reverse gnus-Subject-keyed-sort-subjects string< (lambda (it) (byte-code "ÁÂÃHÄ\"!‡" [it downcase gnus-simplify-subject 1 re-only] 4)) (lambda (it) (gnus-simplify-subject (aref it 1) (quote re-only)))] 4))

(byte-code "ÀÁ!?…
 ÁÂM‡" [fboundp gnus-sortable-date gnus-comparable-date] 3)

(defun gnus-Subject-sort-by-date (reverse) "\
Sort *Subject* buffer by posted date.  Argument REVERSE means
reverse order." (interactive "P") (gnus-Subject-keyed-sort-subjects (quote string<) (quote (lambda (it) (gnus-sortable-date (aref it 5)))) reverse))
