Function: minibuffer--group-by

minibuffer--group-by is a byte-compiled function defined in minibuffer.el.gz.

Signature

(minibuffer--group-by GROUP-FUN SORT-FUN ELEMS)

Documentation

Group ELEMS by GROUP-FUN and sort groups by SORT-FUN.

Source Code

;; Defined in /usr/src/emacs/lisp/minibuffer.el.gz
(defun minibuffer--group-by (group-fun sort-fun elems)
  "Group ELEMS by GROUP-FUN and sort groups by SORT-FUN."
  (let ((groups))
    (dolist (cand elems)
      (let* ((key (funcall group-fun cand nil))
             (group (assoc key groups)))
        (if group
            (setcdr group (cons cand (cdr group)))
          (push (list key cand) groups))))
    (setq groups (nreverse groups)
          groups (mapc (lambda (x)
                         (setcdr x (nreverse (cdr x))))
                       groups)
          groups (funcall sort-fun groups))
    (mapcan #'cdr groups)))