Function: tab-bar-format-tabs-groups

tab-bar-format-tabs-groups is a byte-compiled function defined in tab-bar.el.gz.

Signature

(tab-bar-format-tabs-groups)

Documentation

Produce tabs for the tab bar grouped according to their groups.

Probably introduced at or before Emacs version 28.1.

Source Code

;; Defined in /usr/src/emacs/lisp/tab-bar.el.gz
(defun tab-bar-format-tabs-groups ()
  "Produce tabs for the tab bar grouped according to their groups."
  (let* ((tabs (funcall tab-bar-tabs-function))
         (current-group (funcall tab-bar-tab-group-function
                                 (tab-bar--current-tab-find tabs)))
         (previous-group nil)
         (i 0))
    (mapcan
     (lambda (tab)
       (let ((tab-group (funcall tab-bar-tab-group-function tab)))
         (setq i (1+ i))
         (prog1 (cond
                 ;; Show current group tabs and ungrouped tabs
                 ((or (equal tab-group current-group) (not tab-group))
                  (append
                   ;; Prepend current group name before first tab
                   (when (and (not (equal previous-group tab-group))
                              tab-group)
                     (tab-bar--format-tab-group tab i t))
                   ;; Override default tab faces to use group faces
                   (let ((tab-bar-tab-face-function
                          tab-bar-tab-group-face-function))
                     (tab-bar--format-tab tab i))))
                 ;; Show first tab of other groups with a group name
                 ((not (equal previous-group tab-group))
                  (append
                   (tab-bar--format-tab-group tab i)
                   (when tab-bar-show-inactive-group-tabs
                     (let ((tab-bar-tab-face-function
                            tab-bar-tab-group-face-function))
                       (tab-bar--format-tab tab i)))))
                 ;; Hide other group tabs
                 (t (when tab-bar-show-inactive-group-tabs
                      (let ((tab-bar-tab-face-function
                             tab-bar-tab-group-face-function))
                        (tab-bar--format-tab tab i)))))
           (setq previous-group tab-group))))
     tabs)))