Function: ids-by-group

ids-by-group is an autoloaded and byte-compiled function defined in nnselect.el.gz.

Signature

(ids-by-group ARTICLES)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnselect.el.gz
;; Unclear whether a macro or an inline function is best.
;; (defmacro nnselect-categorize (sequence keyfunc &optional valuefunc)
;;   "Sorts a sequence into categories and returns a list of the form
;; `((key1 (element11 element12)) (key2 (element21 element22))'.
;; The category key for a member of the sequence is obtained
;; as `(keyfunc member)' and the corresponding element is just
;; `member' (or `(valuefunc member)' if `valuefunc' is non-nil)."
;;   (let ((key (make-symbol "key"))
;;      (value (make-symbol "value"))
;;      (result (make-symbol "result"))
;;      (valuefunc (or valuefunc 'identity)))
;;     `(unless (null ,sequence)
;;        (let (,result)
;;       (mapc
;;        (lambda (member)
;;          (let* ((,key (,keyfunc member))
;;                 (,value  (,valuefunc member))
;;                 (kr (assoc ,key ,result)))
;;            (if kr
;;                (push ,value (cdr kr))
;;              (push (list ,key ,value) ,result))))
;;        (reverse ,sequence))
;;       ,result))))

(define-inline ids-by-group (articles)
  (inline-quote
   (nnselect-categorize ,articles #'nnselect-article-group
			#'nnselect-article-id)))