Indeed. I will try to work on it in my spare time, it will take maybe up to a year, but as soon as I have it, I will let the maillist know in case it's of interest. Again, thanks for all your help. GM El mié., 18 nov. 2020 a las 7:37, Ihor Radchenko () escribió: > > So from now on, all the DONE tasks would be archived straight away on the > > day they are DONE. > > Not all the tasks, but all the tasks with repeater. > > > Is there a way to do the same with all the logged items under the > :LOGBOOK: > > that have been DONE before? > > It is certainly possible, but require more complicated function. > > Best, > Ihor > > Gerardo Moro writes: > > > Thank you! Ok, now it works. I had to restart my Emacs, probably that was > > the problem. > > > > So from now on, all the DONE tasks would be archived straight away on the > > day they are DONE. What about the previously LOGGED tasks? > > Is there a way to do the same with all the logged items under the > :LOGBOOK: > > that have been DONE before? > > > > I have thousands of such instances, and I wonder if a function would find > > all those items inside the LOGBOOKS and archive them individually under > > their own DONE date in the org archive file. Maybe too much to ask! :) > > GM > > > > > > El mar., 17 nov. 2020 a las 18:00, Ihor Radchenko () > > escribió: > > > >> > Now I get the error: "wrong number of arguments..." :D > >> > >> It does not happen in my Emacs. It would be helpful if you shared the > >> whole error message. > >> > >> I used the following code for testing: > >> > >> (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 org-archive-repeated-task (arg) > >> "Add a copy of the recurring task marked DONE to archive." > >> (when (and (eq (plist-get arg :type) 'todo-state-change) > >> (string= (plist-get arg :to) "DONE")) ;; The state is > changed > >> to DONE > >> (let* ((pos (plist-get arg :position)) > >> (repeater (org-with-point-at pos (org-get-repeat)))) > >> (when repeater ;; Only consider tasks with repeater timestamp > >> anywhere in the task body > >> (my/org-archive-without-delete))))) > >> > >> (add-hook 'org-trigger-hook #'org-archive-repeated-task) > >> > >> Best, > >> Ihor > >> > >> Gerardo Moro writes: > >> > >> > Now I get the error: "wrong number of arguments..." :D > >> > > >> > El mar., 17 nov. 2020 a las 15:13, Ihor Radchenko (< > yantar92@gmail.com>) > >> > escribió: > >> > > >> >> > I tried this but I get: "symbol's function definition is void: > >> >> > org-trigger-doing" > >> >> > >> >> Oops. That's the old function name. Should be > >> >> > >> >> (add-hook 'org-trigger-hook #'org-archive-repeated-task) > >> >> > >> >> Best, > >> >> Ihor > >> >> > >> >> > >> >> Gerardo Moro writes: > >> >> > >> >> > Thanks for the prompt reply! > >> >> > I tried this but I get: "symbol's function definition is void: > >> >> > org-trigger-doing" > >> >> > > >> >> > El mar., 17 nov. 2020 a las 14:32, Ihor Radchenko (< > >> yantar92@gmail.com>) > >> >> > escribió: > >> >> > > >> >> >> > Thanks, I don't know how to go about doing that, so I would > have to > >> >> rely > >> >> >> on > >> >> >> > others wanting to help me if they consider this to be also > useful > >> to > >> >> them > >> >> >> > (which I definitely think it is!). > >> >> >> > >> >> >> Try the following code. It should archive any repeated task once > it > >> is > >> >> >> marked DONE. > >> >> >> > >> >> >> (defun org-archive-repeated-task (arg) > >> >> >> "Add a copy of the recurring task marked DONE to archive." > >> >> >> (when (and (eq (plist-get arg :type) 'todo-state-change) > >> >> >> (string= (plist-get arg :to) "DONE")) ;; The state is > >> >> changed > >> >> >> to DONE > >> >> >> (let* ((pos (plist-get arg :position)) > >> >> >> (repeater (org-with-point-at pos (org-get-repeat)))) > >> >> >> (when repeater ;; Only consider tasks with repeater > timestamp > >> >> >> anywhere in the task body > >> >> >> (my/org-archive-without-delete))))) > >> >> >> (add-hook 'org-trigger-hook #'org-trigger-doing) > >> >> >> > >> >> >> Best, > >> >> >> Ihor > >> >> >> > >> >> > >> >