emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Edouard Debry <edouard.debry@gmail.com>
To: emacs-orgmode@gnu.org
Subject: How to set priority of a heading with the highest one among its children
Date: Thu, 20 Apr 2023 13:04:42 +0200	[thread overview]
Message-ID: <868rem24s5.wl-edouard.debry@gmail.com> (raw)


Given this tree :

* TODO Main [#2]
** DONE Child1 [#0]
** TODO Child2 [#3]
** TODO Child3 [#4]
*** TODO Subchild1 [#1]
*** TODO Subchild2 [#2]

I would like that the priority of parent headings be automatically set to the highest
priority among its note done children.

So, in previous example, as soon as Subchild1 priority is set to 1 (0=highest, 5=lowest),
then priority of Child3 should be replaced by 1 (instead of 4) and priority of Main should
also be changed to 1 as this became the priority of its child Child3, but it would not
be set to 0, priority of Child1, as this task is done.

The reason for this it that usually a project is a main heading, which is split in
subtasks and, I want the overall project priority to reflect the highest priority of its
not done tasks.

To do so, I need to create a recursive function :

(adjust-priority ()
  (apply-on-child  #'adjust-priority)
  (set-priority (if-child (collect highest-priority))))

and apply this function to the top level heading whenever a change in priority occurs in
its children.

But this involves org skills a bit beyond my understanding, I wonder if you could give
me some piece of advices on how to do that :
- is there a suitable hook for this function ?
- when in a given tree, how can I select the top level heading ?
- when at a given heading, how can I change programmatically the priority ?

For this latter question, I tried (org-entry-put nil "PRIORITY" "2"), but it replied that

 org-priority: Priority must be between ‘0’ and ‘5’


Regards


             reply	other threads:[~2023-04-20 11:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-20 11:04 Edouard Debry [this message]
2023-04-23 18:07 ` How to set priority of a heading with the highest one among its children Ihor Radchenko
2023-04-24 12:24   ` *** BULK *** " DEBRY.Edouard
2023-04-24 12:31     ` Ihor Radchenko

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=868rem24s5.wl-edouard.debry@gmail.com \
    --to=edouard.debry@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).