Function: tab-line-tabs-buffer-groups
tab-line-tabs-buffer-groups is a byte-compiled function defined in
tab-line.el.gz.
Signature
(tab-line-tabs-buffer-groups)
Documentation
Return a list of tabs that should be displayed in the tab line.
By default return a list of buffers grouped by major mode,
according to tab-line-tabs-buffer-groups(var)/tab-line-tabs-buffer-groups(fun).
If non-nil, tab-line-tabs-buffer-group-function is used to
generate the group name.
Source Code
;; Defined in /usr/src/emacs/lisp/tab-line.el.gz
(defun tab-line-tabs-buffer-groups ()
"Return a list of tabs that should be displayed in the tab line.
By default return a list of buffers grouped by major mode,
according to `tab-line-tabs-buffer-groups'.
If non-nil, `tab-line-tabs-buffer-group-function' is used to
generate the group name."
(if (window-parameter nil 'tab-line-groups)
(let* ((buffers (funcall tab-line-tabs-buffer-list-function))
(groups
(seq-sort tab-line-tabs-buffer-groups-sort-function
(delq nil (mapcar #'car (seq-group-by
(lambda (buffer)
(tab-line-tabs-buffer-group-name
buffer))
buffers)))))
(selected-group (window-parameter nil 'tab-line-group))
(tabs
(mapcar (lambda (group)
`(tab
(name . ,group)
(selected . ,(equal group selected-group))
(select . ,(lambda ()
(set-window-parameter nil 'tab-line-groups nil)
(set-window-parameter nil 'tab-line-group group)
(set-window-parameter nil 'tab-line-hscroll nil)))))
groups)))
tabs)
(let* ((window-parameter (window-parameter nil 'tab-line-group))
(group-name (tab-line-tabs-buffer-group-name (current-buffer)))
(group (prog1 (or window-parameter group-name "All")
(when (equal window-parameter group-name)
(set-window-parameter nil 'tab-line-group nil))))
(group-tab `(tab
(name . ,group)
(group-tab . t)
(select . ,(lambda ()
(set-window-parameter nil 'tab-line-groups t)
(set-window-parameter nil 'tab-line-group group)
(set-window-parameter nil 'tab-line-hscroll nil)))))
(buffers
(seq-filter (lambda (b)
(equal (tab-line-tabs-buffer-group-name b) group))
(funcall tab-line-tabs-buffer-list-function)))
(sorted-buffers (if (functionp tab-line-tabs-buffer-group-sort-function)
(seq-sort tab-line-tabs-buffer-group-sort-function
buffers)
buffers))
(tabs (mapcar (lambda (buffer)
`(tab
(name . ,(funcall tab-line-tab-name-function buffer))
(selected . ,(eq buffer (current-buffer)))
(buffer . ,buffer)
(close . ,(lambda (&optional b)
;; kill-buffer because bury-buffer
;; won't remove the buffer from tab-line
(kill-buffer (or b buffer))))))
sorted-buffers)))
(cons group-tab tabs))))