Here is the definition that creates such multi-level outlines: (setq tabulated-list-groups (tabulated-list-groups tabulated-list-entries '((path-fun . (lambda (b) (list (list ;; Project names (with-current-buffer (car b) (if-let ((project (project-current))) (project-name project) default-directory)) ;; Mode names (let ((mode (aref (cadr b) 5))) (or (cdr (seq-find (lambda (group) (string-match-p (car group) mode)) mouse-buffer-menu-mode-groups)) mode)))))) (sort-fun . (lambda (groups) ;; Sort groups by name (sort groups :key #'car :in-place t))))))