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: Sat, 24 Feb 2024 19:43:25 +0200 Organization: LINKOV.NET Message-ID: <86jzmtda1y.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> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="16497"; 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 Sat Feb 24 18:56:51 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 1rdwGY-0004BN-PB for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 24 Feb 2024 18:56:50 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rdwGN-0000ko-QN; Sat, 24 Feb 2024 12:56:39 -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 1rdwGL-0000YE-Pe for bug-gnu-emacs@gnu.org; Sat, 24 Feb 2024 12:56: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 1rdwGL-0002Wi-GJ for bug-gnu-emacs@gnu.org; Sat, 24 Feb 2024 12:56:37 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rdwGj-000350-Mm for bug-gnu-emacs@gnu.org; Sat, 24 Feb 2024 12:57:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 24 Feb 2024 17:57:01 +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.170879740611787 (code B ref 69305); Sat, 24 Feb 2024 17:57:01 +0000 Original-Received: (at 69305) by debbugs.gnu.org; 24 Feb 2024 17:56:46 +0000 Original-Received: from localhost ([127.0.0.1]:45221 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rdwGO-00033r-Ux for submit@debbugs.gnu.org; Sat, 24 Feb 2024 12:56:46 -0500 Original-Received: from relay4-d.mail.gandi.net ([217.70.183.196]:59803) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rdwGM-00033P-2i for 69305@debbugs.gnu.org; Sat, 24 Feb 2024 12:56:39 -0500 Original-Received: by mail.gandi.net (Postfix) with ESMTPSA id 0028CE0004; Sat, 24 Feb 2024 17:55:42 +0000 (UTC) In-Reply-To: <86edd31tv5.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 23 Feb 2024 10:13:02 +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:280566 Archived-At: >> >> >> +@defvar tabulated-list-groups >> >> >> +This buffer-local variable specifies the groups of entries displayed in >> >> >> +the Tabulated List buffer. Its value should be either a list, or a >> >> >> +function. >> >> >> + >> >> >> +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). >> >> >> + >> >> >> +Otherwise, the value should be a function which returns a list of the >> >> >> +above form when called with no arguments. >> >> >> +@end defvar >> >> > >> >> > I think the way to specify ENTRIES for this customization should be >> >> > described in more detail. Reading the above description, even the >> >> > idea of using ENTRIES for specifying grouping is unclear, since >> >> > tabulated-list-entries is basically just a list of column descriptors. >> >> >> >> But ENTRIES are described in 'tabulated-list-entries'. Here ENTRIES >> >> are no different from 'tabulated-list-entries' that are just >> >> column descriptors. >> > >> > My point is that it isn't obvious how to describe grouping in terms of >> > column descriptors. I think the manual should tell in more detail how >> > to use column descriptors to specify how entries should be grouped. >> > Maybe an example or two is all that it takes to do that. >> >> 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" ""]) ...)) >> >> >> +(ert-deftest tabulated-list-groups () >> >> >> + (with-temp-buffer >> >> >> + (tabulated-list-mode) >> >> >> + (setq tabulated-list-groups >> >> >> + (reverse >> >> >> + (seq-group-by (lambda (b) (concat "* " (aref (cadr b) 3))) >> >> >> + tabulated-list--test-entries))) >> >> >> + (setq tabulated-list-format tabulated-list--test-format) >> >> >> + (setq tabulated-list-padding 7) >> >> >> + (tabulated-list-init-header) >> >> >> + (tabulated-list-print) >> >> > >> >> > This seems to test only the function value of tabulated-list-groups? >> >> > What about the other form of the value? >> >> >> >> The other forms have no functional difference. >> > >> > Sorry, I don't follow. Shouldn't we test the capability of specifying >> > grouping by the method other than by providing a function? >> >> Actually there are no other methods. > > The doc string says the "value can be either a list or a function". I > see only one value here, so I'm asking what about a value of the other > form. Or what am I missing here? Another form is a function. But there is no need to test this. It's just a copy from tabulated-list-entries that is unused.