emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Archiving repeated tasks under corresponding date tree for each repe


From: Gerardo Moro
Subject: Re: Archiving repeated tasks under corresponding date tree for each repeated item
Date: Tue, 17 Nov 2020 10:58:37 +0200

Hi again, 

I actually now realized that your function will not unfortunately archive each logged item (those located in the logbook) in its corresponding date (!).
What it will do is to archive the whole tree under today's date without deleting it from the original org file.

For instance, 

* TODO REPEATED TASK SAMPLE
  SCHEDULED: <2020-11-30 Mon +20d>
  :PROPERTIES:
  :STYLE:    habit
  :LAST_REPEAT: [2020-11-09 Mon 22:28]
  :END:
:LOGBOOK:
- State "DONE"       from "TODO"       [2020-11-15 Sun 22:28]
- State "DONE"       from "STARTED"    [2020-11-14 Sat 22:17]
- State "DONE"       from "STARTED"    [2020-11-13 Fri 22:17]
- State "DONE"       from "STARTED"    [2020-11-11 Wed 22:17]

If I position myself in any point in this entry, when I execute the function it will archive the whole tree+subtree under today's date (the date when it was archived).
The behaviour I was expecting is to archive each of the logged tasks under their corresponding date (on the 11th, 13th, 14th and 15th of November).
Just to be clear :)
G

El lun., 16 nov. 2020 a las 17:21, Gerardo Moro (<gerardomoro37@gmail.com>) escribió:
Wow, I’m impressed by your help, you are very kind!
I am also impressed by your researching skills, I gave a long go at trying to find some code online unsuccessfully.

Yes, I agree that the agenda is a nice way to go to visualize my past events (with v A).
My idea of not relying on the agenda interface is just to be free and have an archive org file with all my entries, easier to scroll from any device without the need of Emacs.

As for the function to archive the individual repeated tasks into their corresponding tree:
I’m not an emacs lisp programmer (or any kind of!). As I see, this function works only “at point”.
The way I work is I mark tasks as DONE during a couple weeks, and then I call this function that tracks all my org file and archives all DONE / CANCELLED items.
This is great because I don’t have to do it one by one.

(defun my/org-archive-done-tasks-file ()
  (interactive)
  (org-map-entries
   (lambda ()
     (org-archive-subtree)
     (setq org-map-continue-from (outline-previous-heading)))
     "TODO=\"DONE\"|TODO=\"CANCELED\\"" 'file))

Do you think there is a way to combine these two functions so that when I call the fucntion, I get to archive all DONE/CANCELLED & repeated DONE/CANCELLED tasks (the latter without deleting the logged task or its respective heading)?

Best, 
G.

El jue., 12 nov. 2020 a las 12:28, Ihor Radchenko (<yantar92@gmail.com>) escribió:
> Hope it is clear now, thanks so much for any help!

Sorry for not making my previous email more clear. I actually understood
what you want to achieve. My suggestion was rather an alternative
approach to "revisit the past" - you can always build agenda view for a
specific date (or range of dates) in the past. That way, you would not
need to look into archive file manually at all.

On your actual question, I think I found some old reddit comment [1] that
may be relevant. The code provides a new command to archive an org
headline without actually deleting it. That way, you will get a copy of
your headline on the date of archival. Below is the original code with
me adding docstrings for more clarity.

(defun my/org-archive-delete-logbook ()
"Delete LOGBOOK of the entry at point. It is obsolete once the copy of
the item is moved to the archive file."
  (save-excursion
   (org-end-of-meta-data)
   (let ((elm (org-element-at-point)))
     (when (and
            (equal (org-element-type elm) 'drawer)
            (equal (org-element-property :drawer-name elm) "LOGBOOK"))
       (delete-region (org-element-property :begin elm)
                      (org-element-property :end elm))))))

(defun my/org-archive-without-delete ()
"Archive item at point, but do not actually delete it."
  (cl-letf (((symbol-function 'org-cut-subtree) (lambda () nil)))
    (org-archive-subtree)))

(defun my/org-archive-logbook ()
"Create an archive copy of subtree at point and delete LOGBOOK in the
first headline of the subtree."
  (interactive)
  (my/org-archive-without-delete)
  (my/org-archive-delete-logbook))

I think you can modify the last function and call it in
org-trigger-hook, so that repeating items would be archived without
deleting every time you mark the item DONE.

[1] https://old.reddit.com/r/orgmode/comments/dg43hs/can_i_archive_a_property_drawer/f3frk2n/

Best,
Ihor

Gerardo Moro <gerardomoro37@gmail.com> writes:

> Thanks, Ihor.
> Indeed, that is an excellent feature of agenda. I use it sometimes  to
> visualize what I have DONE during the week on the sopt.
> What I aim to accomplish however is a more systematic log of all the DONE
> tasks, this is, to have an archive file where to archive all tasks.
> This file is in the format:
>
> 2020
>    2020-01-01 DONE task1
>    2020-01-12 DONE task2
>    2020-02-01 CANCELLED task3
>
> So it is indeed a datetree file where I can revisit the past :) if you will.
> The problem with habits and repeated tasks is that they don't get archived
> when DONE...
> They get archived once the task is cancelled or completed as a whole, all
> under the day the task stopped continuing, under which I have all the
> logged individual completion.
> It would be desirable to have each "completion" archived under its
> corresponding datetree, it is more meaningful :)
>
> Hope it is clear now, thanks so much for any help!
> GM
> So even if I have beeng doing the task every wednesday for a year, it won't
> be archived
>
> El mar., 3 nov. 2020 a las 7:53, Ihor Radchenko (<yantar92@gmail.com>)
> escribió:
>
>> > It would be great if each of these individual "task
>> > happenings" were archived under the date and time they were completed
>> > individually, and not just all as one block. This way I could get weekly
>> > reviews that take those into account.
>>
>> What about trying to do your weekly review using org-agenda? You can
>> show the task every day you complete it by enabling org-agenda-log-mode
>> in your weekly agenda (v l). If your tasks are also archived regularly,
>> you may also need "v A" to include archive files into agenda view.
>>
>> Best,
>> Ihor
>>
>>
>> Gerardo Moro <gerardomoro37@gmail.com> writes:
>>
>> > Dear all,
>> >
>> > I am resending this as I believe it's a useful concept to implement,
>> > especially by those who track their tasks and do weekly/monthly reviews.
>> >
>> > When I archive a repeated task (let's say, a learning project of 15
>> minutes
>> > every Wednesday day for 2 months), the task gets archived in a date tree
>> > all under the day it was closed (cancelled) as a whole. This means that
>> all
>> > the LOGGED individual instances of repetition are archived on the day the
>> > project got completed. It would be great if each of these individual
>> "task
>> > happenings" were archived under the date and time they were completed
>> > individually, and not just all as one block. This way I could get weekly
>> > reviews that take those into account. Not sure if I made myself
>> understood!
>> > :))
>> >
>> > Thanks!
>> > G
>>

reply via email to

[Prev in Thread] Current Thread [Next in Thread]