* lisp/buff-menu.el: Improve 'Buffer-menu-group-by-mode' (bug#70150).

(Buffer-menu-group-by): Replace function-item with const
better suitable for Customization UI.
(Buffer-menu-group-by-mode): Use 'mouse-buffer-menu-mode-groups'
to group buffers by mode.
This commit is contained in:
Juri Linkov 2024-04-12 19:39:49 +03:00
parent 414f8d02c1
commit 5bd4d45867

View file

@ -107,10 +107,10 @@ The default options can group by a mode, and by a root directory of
a project or just `default-directory'.
If this is nil, buffers are not divided into groups."
:type '(choice (const :tag "No grouping" nil)
(function-item :tag "Group by mode"
Buffer-menu-group-by-mode)
(function-item :tag "Group by project root or directory"
Buffer-menu-group-by-root)
(const :tag "Group by mode"
Buffer-menu-group-by-mode)
(const :tag "Group by project root or directory"
Buffer-menu-group-by-root)
(function :tag "Custom function"))
:group 'Buffer-menu
:version "30.1")
@ -798,7 +798,11 @@ See more at `Buffer-menu-filter-predicate'."
(t "")))
(defun Buffer-menu-group-by-mode (entry)
(concat "* " (aref (cadr entry) 5)))
(let ((mode (aref (cadr entry) 5)))
(concat "* " (or (cdr (seq-find (lambda (group)
(string-match-p (car group) mode))
mouse-buffer-menu-mode-groups))
mode))))
(declare-function project-root "project" (project))
(defun Buffer-menu-group-by-root (entry)