From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#69305: outline-minor-mode for tabulated-list-mode Date: Tue, 27 Feb 2024 19:40:10 +0200 Organization: LINKOV.NET Message-ID: <86plwhg5o5.fsf@mail.linkov.net> References: <86msrtvi06.fsf@mail.linkov.net> <86frxlmy1d.fsf@gnu.org> <86cyspt02f.fsf@mail.linkov.net> <861q94nc4j.fsf@gnu.org> <867ciws983.fsf@mail.linkov.net> <86plwo1fii.fsf@gnu.org> <86il2fwuc8.fsf@mail.linkov.net> <86edd31tv5.fsf@gnu.org> <86jzmtda1y.fsf@mail.linkov.net> <86sf1hybm3.fsf@gnu.org> <86msrpx91u.fsf@mail.linkov.net> <86frxgwdzk.fsf@gnu.org> <86jzmqgxvg.fsf@mail.linkov.net> <861q8yux46.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10231"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) Cc: 69305@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Feb 27 18:50:59 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rf1bW-0002VY-Iv for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 27 Feb 2024 18:50:58 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rf1bC-0002gi-9x; Tue, 27 Feb 2024 12:50:38 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rf1bB-0002gG-6E for bug-gnu-emacs@gnu.org; Tue, 27 Feb 2024 12:50:37 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rf1bA-0006hk-U5 for bug-gnu-emacs@gnu.org; Tue, 27 Feb 2024 12:50:36 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rf1ba-0002Uq-Hu for bug-gnu-emacs@gnu.org; Tue, 27 Feb 2024 12:51:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 27 Feb 2024 17:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69305 X-GNU-PR-Package: emacs Original-Received: via spool by 69305-submit@debbugs.gnu.org id=B69305.17090562179465 (code B ref 69305); Tue, 27 Feb 2024 17:51:02 +0000 Original-Received: (at 69305) by debbugs.gnu.org; 27 Feb 2024 17:50:17 +0000 Original-Received: from localhost ([127.0.0.1]:42098 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rf1aq-0002SX-C6 for submit@debbugs.gnu.org; Tue, 27 Feb 2024 12:50:17 -0500 Original-Received: from relay6-d.mail.gandi.net ([217.70.183.198]:40473) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rf1ao-0002S9-IG for 69305@debbugs.gnu.org; Tue, 27 Feb 2024 12:50:15 -0500 Original-Received: by mail.gandi.net (Postfix) with ESMTPSA id 9CA14C0004; Tue, 27 Feb 2024 17:49:41 +0000 (UTC) In-Reply-To: <861q8yux46.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 27 Feb 2024 10:31:21 +0200") X-GND-Sasl: juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:280735 Archived-At: >> >> >> >> Sorry, I don't understand what is unclear here: >> >> >> >> >> >> >> >> If the value is a list, each list element corresponds to one group, and >> >> >> >> should have the form @w{@code{(@var{group-name} @var{entries})}}, where >> >> >> >> @var{group-name} is a string inserted before all group entries, and >> >> >> >> @var{entries} have the same format as @code{tabulated-list-entries} >> >> >> >> (see above). >> >> >> >> >> >> >> >> Basically this says that the format is (group-name entries) where >> >> >> >> entries are described in tabulated-list-entries as having the format >> >> >> >> (id contents). There is no need to duplicate the description of entries. >> >> >> > >> >> >> > Maybe I'm missing something here. To put it more concretely, can you >> >> >> > show a value of tabulated-list-groups that will cause the buffers in >> >> >> > buffer list grouped by major mode using the above form? >> >> >> >> >> >> 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" (# ["." " " "*" #("*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? >> >> >> >> This describes the internal data structure, not a defcustom. >> > >> > Well, my question above, viz.: >> > >> >>> > Maybe I'm missing something here. To put it more concretely, can you >> >>> > show a value of tabulated-list-groups that will cause the buffers in >> >>> > buffer list grouped by major mode using the above form? >> > >> > was about the value of this defcustom. I hoped that by having such a >> > value as part of this discussion, we will be able to clear any >> > misunderstandings that could be getting in the way. >> >> But tabulated-list-groups is not a defcustom. >> There are no defcustoms here. > > Buffer-menu-group-by _is_ a defcustom, and it is documented thusly: > > + "If non-nil, buffers are grouped by function. > +This function takes one argument: a list of entries in the same format > +as in `tabulated-list-entries', and should return a list in the format > +suitable for `tabulated-list-groups'. > > So you are inviting users to write functions that return values of a > certain format, but the format's documentation IMO doesn't make it > clear how to specify a grouping, and for its important part alludes to > another variable (tabulated-list-entries), whose documentation is > suitable for different kind of uses, not for grouping of entries. The format 'tabulated-list-entries' is input. The format 'tabulated-list-groups' is output. > Since tabulated-list-groups is such an important part of the > documentation of Buffer-menu-group-by, the doc string of > tabulated-list-groups is in effect part of the doc string of > Buffer-menu-group-by, and should IMO be worded as appropriate for user > options. The docstring of 'tabulated-list-groups' already sufficiently documents the format: (defvar-local tabulated-list-groups nil "Groups displayed in the current Tabulated List buffer. This should be either a function, or a list. If a list, each element has the form (GROUP-NAME ENTRIES), where: - GROUP-NAME is a group name as a string, which is displayed at the top line of each group. - ENTRIES is a list described in `tabulated-list-entries'. There is no need to duplicate the description of linked 'tabulated-list-entries'. And here it's clear that the function should add GROUP-NAME to groups from 'tabulated-list-entries'.