brabalan/org-review

(Feature Request) incremental review dates

Opened this issue · 3 comments

It would be great to have a feature to set incremental review dates based on date of last review. For example: next day, next week, next month, next year etc.

I believe it's possible to achieve it by introducing new variable org-review-delay-spaces containing list of review offsets ("+1d" "+1w" "+1m" "+1y") and do one of:

  1. Set a hook org-after-todo-state-change-hook and check if this is a review task (contains NEXT_REVIEW or LAST_REVIEW property), get current value of REVIEW_DELAY and increment REVIEW_DELAY accordingly. It's a bit heavyweight.
  2. Set before advice on org-review-insert-last-review, which get current value of REVIEW_DELAY and increment REVIEW_DELAY accordingly. This is tricky because if org-review-insert-last-review throws any error later the value of REVIEW_DELAY will be corrupted.
  3. (best) Modify org-review-insert-last-review to use it org-review-delay-spaces accordingly as in other examples.

I'm not sure to understand the feature you're asking for. You want review delays to change at each review? So after doing the 1d review, the list changes by removing it? And what happens when the list becomes empty (or is the last element always there)?

My apologies for late reply, I thought I did replied already.

You want review delays to change at each review?

Yes. The expected behaviour is to set next review date of specific item using next offset from the list of this item.

The proposed variable org-review-delay-spaces, could be review template for next review items created. For example, I'm adding TODO "Review GTD book" (by using org-capture or similar), the property REVIEW_BEGIN is set to current date and property REVIEW_SCHEDULE is copied from org-review-delay-spaces. Using this two properties system can calculate next review date for this item.

So after doing the 1d review, the list changes by removing it? And what happens when the list becomes empty (or is the last element always there)?

Yes. We remove items from the list in property REVIEW_SCHEDULE for particular TODO, if the list is empty, we assume the knowledge was absorbed.

I thought about this more and even if the idea makes sense I will try simpler solution for now, just by using basic org features.

For every book I want to review in future I will create scheduled TODO items +1d, +1w, +1m, +1y starting from now by hand or by using org-capture I will create multiple scheduled items at once.

I won't have time to implement this. I will gladly consider a pull request, however.