Function: ibuffer-generate-filter-groups

ibuffer-generate-filter-groups is a byte-compiled function defined in ibuf-ext.el.gz.

Signature

(ibuffer-generate-filter-groups BMARKLIST &optional NOEMPTY NODEFAULT)

Source Code

;; Defined in /usr/src/emacs/lisp/ibuf-ext.el.gz
(defun ibuffer-generate-filter-groups (bmarklist &optional noempty nodefault)
  (let ((filter-group-alist (if nodefault
				ibuffer-filter-groups
			      (append ibuffer-filter-groups
				      (list (cons "Default" nil))))))
    ;; (dolist (hidden ibuffer-hidden-filter-groups)
    ;;   (setq filter-group-alist (ibuffer-remove-alist
    ;;                             hidden filter-group-alist)))
    (let ((vec (make-vector (length filter-group-alist) nil))
	  (i 0))
      (dolist (filtergroup filter-group-alist)
	(let ((filterset (cdr filtergroup)))
          (let* ((res (seq-group-by (lambda (bufmark)
                                      (ibuffer-included-in-filters-p (car bufmark)
                                                                     filterset))
                                    bmarklist))
                 (hip-crowd (cdr (assq t res)))
                 (lamers (cdr (assq nil res))))
	    (aset vec i hip-crowd)
	    (cl-incf i)
	    (setq bmarklist lamers))))
      (let (ret)
	(dotimes (j i)
	  (let ((bufs (aref vec j)))
	    (unless (and noempty (null bufs))
	      (push (cons (car (nth j filter-group-alist))
			  bufs)
		    ret))))
        ret))))