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

From: Adam Porter <[email-masked]>
Date: Sun, 25 Feb 2024 02:00:45 -0600

>> Data structure for `tabulated-list-groups' is a list of elements,
>> each element should of the form
>> 
>>   (GROUP-NAME (ID . CONTENTS) (ID . CONTENTS) ...)
>> 
>> where GROUP-NAME is the name of the group, ID is a Lisp object that
>> identifies the entry and CONTENTS is a vector with the same number of
>> elements as `tabulated-list-format'.  When buffers grouped by major mode:
>> 
>>   (("* Lisp Interaction" (#<buffer *scratch*> ["." " " "*" #("*scratch*" 0 9 ...) "225" "Lisp Interaction" ""]) ...))
> 
> This is the value that the user is supposed to supply for the
> defcustom?  That is, the user must specify all the buffers explicitly?
> What happens when there's one more buffer in some mode? does the user
> have then to modify the value of the defcustom?

FWIW, using, e.g. Bufler/Taxy to group buffers, the user would define a 
set of group key functions like so:

   (setf buffer-keys '((project) (special mode) mode))

That in effect says, "If a buffer is part of a project, group it by that 
project's directory; otherwise if a buffer is special, group it with 
other special buffers, and create subgroups by mode; otherwise group it 
by mode."

Then the groups are created dynamically at runtime when the buffer list 
buffer is refreshed.