Subject: bug#69305: outline-minor-mode for tabulated-list-mode

From: Juri Linkov <[email-masked]>
Date: Wed, 06 Mar 2024 19:37:04 +0200

> (defvar buffery-taxy
>   (cl-labels ((directory (buffer)
>                 (buffer-local-value 'default-directory buffer))
>               (mode (buffer)
>                 (prin1-to-string (buffer-local-value 'major-mode buffer)))
>               (project (buffer)
>                 (with-current-buffer buffer
>                   (when-let ((project (project-current)))
>                     (project-root project))))
>               (specialp (buffer)
>                 (when (not (buffer-file-name buffer))
>                   "*special*"))
>               (make-fn (&rest args)
>                 (apply #'make-taxy-magit-section
>                        :make #'make-fn
>                        :format-fn #'buffer-name
>                        args)))
>     (make-fn
>      :name "Buffers"
>      :take (apply-partially #'taxy-take-keyed
>                             (list (list #'project)
>                                   (list #'specialp)
>                                   #'directory #'mode)))))

Thanks for the good example.  This is how the same
is achieved with 'Buffer-menu-group-by':

#+begin_src emacs-lisp
(setq Buffer-menu-group-by
      (lambda (b)
        (concat "* "
         (or
          (with-current-buffer (car b)
            (when-let ((project (project-current)))
              (project-root project)))
          (when (not (buffer-file-name (car b)))
            "*special*")
          (buffer-local-value 'default-directory (car b))
          (aref (cadr b) 5)))))
#+end_src