emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Tim Cross <theophilusx@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: Cascading cookie counts
Date: Sat, 24 Jul 2021 10:48:46 +1000	[thread overview]
Message-ID: <87sg04qxwj.fsf@gmail.com> (raw)
In-Reply-To: <CA+pajWJPruo=+mWJnfjHwAYS42dt98OiK+7H5d6XuAMt3U_tsw@mail.gmail.com>


George Mauer <gmauer@gmail.com> writes:

> * Cascading Checkbox Cookie Counts
>   I would like checkbox cookies to show the total of all cookies beneath them regardless of hierarchy nesting.
>   The code for ~org-update-checkbox-count~ is more complex than I expected so before spending time digging into this, maybe someone here has a
> tip?
>   
> ** This should show 3/5 [1/2]
>    - [X] Done
>    - [ ] Not Done
> ** Nesting level 1
>    - [ ] Not Done
>    - [X] Done
> ** Nesting level 2
> *** Nesting level 2.1
>     - [X] Done
>       
> ** Cookie data recursive doesn't seem to affect this
>    My understanding is that there's a cookie data ~<recursive>~ property flag you can use. I assumed that's what this was for but it seems to not
> affect things (I've tried both with and without the angle braces, but the regex seems to imply braces which is odd)
> *** This should show 3/5 [1/2]
>     :PROPERTIES:
>     :COOKIE_DATA: <recursive>
>     :END:
>     - [X] Done
>     - [ ] Not Done
> *** Nesting level 1
>     - [ ] Not Done
>     - [X] Done
> *** Nesting level 2
> **** Nesting level 2.1
>      - [X] Done

I think there may be some confusion regarding expected and actual
behaviour. Possibly the manual could be clarified a bit. I did find one
error in the manual where it refers to
org-hierarchical-checkbox-statistics when the variable is actually
called org-checkbox-hierarchical-statistics. I think it is actually the
variable name in the code which is incorrect as there is a
org-hierarchical-todo-statistics - seems somewhat inconsistent. Probably
should rename the variable in the code to be
org-hierarchical-checkbox-statistics to be consistent.

Where I think there is confusion is that when the manual talks about the
hierarchical structure, it is talking about the list item structure e.g.

* This should show 1/2 [1/2]
  - [X] Item 1
  - [-] Item 2  
    - [ ] Item 2.1  
    - [X] Item 2.2
      - [X] Item 2.2.1

or

* This should show  3/5 [2/5]
  :PROPERTIES:
  :COOKIE_DATA: recursive
  :END:
  - [X] Item 1
  - [-] Item 2  
    - [ ] Item 2.1
    - [-] Item 2.2
      - [X] Item 2.2.1

if you want a checkbox hierarchy, they can be of different levels, but must
all be within the same list environment. You cannot have checkboxes spread
across different sub trees (heading levels)

While I can see what you are after, I cannot see how the current
implementation could be changed and not result in significant breakage
for others. I also think the code is complex enough that if you also
removed the restriction that the checkbox hierarchy has to be within the
same heading, it would become even more complex and would likely result
in significant performance impact as you would now need to search
multiple heading hierarchies etc. 


      reply	other threads:[~2021-07-24  1:55 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-23 14:06 Cascading cookie counts George Mauer
2021-07-24  0:48 ` Tim Cross [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sg04qxwj.fsf@gmail.com \
    --to=theophilusx@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).