From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id qPXNNE/3s18hRAAA0tVLHw (envelope-from ) for ; Tue, 17 Nov 2020 16:16:15 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id 6N2GME/3s18UFwAAbx9fmQ (envelope-from ) for ; Tue, 17 Nov 2020 16:16:15 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 535929402C8 for ; Tue, 17 Nov 2020 16:16:15 +0000 (UTC) Received: from localhost ([::1]:45046 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kf3eP-0002Lq-Cz for larch@yhetil.org; Tue, 17 Nov 2020 11:16:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34140) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kf3dX-0002L6-7Z for emacs-orgmode@gnu.org; Tue, 17 Nov 2020 11:15:19 -0500 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]:42679) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kf3dT-00027o-JE for emacs-orgmode@gnu.org; Tue, 17 Nov 2020 11:15:17 -0500 Received: by mail-lj1-x22b.google.com with SMTP id p12so24902812ljc.9 for ; Tue, 17 Nov 2020 08:15:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=JZ8UrgAZ0e+++uRKK1U91m4WuSoPVSl9j4JFQmXLjZ4=; b=Pvny9I9tB3rZ6Pcc9iJVAT0bPsGJkcwhxS1QFAu2945mF82URAlX9CO8n0o9gcLhZT 3tQeap8iV8iV0AGbZGz+RciMT+xmyTy5/MneBsZqbVW/xT2JiVy7p0tb+rHO8ooNCg3Q F7UYLba/cBhr9qJpOYZ7AkISmWRjekELSkIlLY9HkYJXvjxRawp7Eosb5PK0ybihMCLZ 7215XE4WsK7s28qi/GzWrQPu7YHvXZnq7ity+vAV0W+qwkchB/Vx8qw3ToCslSKM2YDL PO+QPYljTa6+BQpYuChONdEqKGuvywaiIBN9Onpr+FwIibB2tRwYGN0k+LV2Qfpd4wnt 2+5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=JZ8UrgAZ0e+++uRKK1U91m4WuSoPVSl9j4JFQmXLjZ4=; b=sZxffnd3lVbyRnAVJJyfnbqrutzR+VrwhY11WeAhAv433Mn5Jzm2K3DSpJRqAuxVYl wY3SGFTnRIhDphSpmnvKB8Ue6/PmIBhlrpU953BxWvOwcND9bWWZWYB2JSlRv6h8ntXI O8a4/Fj/LJnQPf/lJIHfGRDbxC35pvtfGC/x8lABqTFD+Oxl193JUj3GfbZHzRSl7d5P wBSVHjrSJXHLV026LWUuvy4FxSXQhcgswxcMbecVi0ivr+my1ikwTYjTnSlVLBRvSJpB 8Zo6yvJsqJ7VOKd2bpps6qe+hXeyLH9HUS1R2q7sScYWlj/8vi2P7J1+GxaXzRi2zYAc ObBQ== X-Gm-Message-State: AOAM532HbDateZd5758Uix9l6uGg5iYFOGeccov5vgM9kWd5N1z96LtQ eEwS92HNTOsuzm3ipvqz9FCHPBHJHtqJ5fLjXns= X-Google-Smtp-Source: ABdhPJxSEKgXx5J33KPSytpR+bTAQ601KG1MwZHzx9AnVf3qHu4MYqspcxHlV7AYCDHMEuhwpYmF4HNPT3trb7w4yes= X-Received: by 2002:a2e:61a:: with SMTP id 26mr2245806ljg.35.1605629712723; Tue, 17 Nov 2020 08:15:12 -0800 (PST) MIME-Version: 1.0 References: <87lffj7zss.fsf@localhost> <87zh3mlvj7.fsf@localhost> <87ft58nxck.fsf@localhost> <87d00cnp0i.fsf@localhost> <87a6vgnn4q.fsf@localhost> <874klonfdi.fsf@localhost> In-Reply-To: <874klonfdi.fsf@localhost> From: Gerardo Moro Date: Tue, 17 Nov 2020 18:15:00 +0200 Message-ID: Subject: Re: Archiving repeated tasks under corresponding date tree for each repeated item To: Ihor Radchenko Content-Type: multipart/alternative; boundary="000000000000aaf15905b44fcc1b" Received-SPF: pass client-ip=2a00:1450:4864:20::22b; envelope-from=gerardomoro37@gmail.com; helo=mail-lj1-x22b.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: emacs-orgmode Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: ns3122888.ip-94-23-21.eu Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=Pvny9I9t; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: -1.71 X-TUID: hpanjvRY8SVh --000000000000aaf15905b44fcc1b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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=C3=B3: > > 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=3D (plist-get arg :to) "DONE")) ;; The state is chan= ged > 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 (= ) > > escribi=C3=B3: > > > >> > 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=C3=B3: > >> > > >> >> > 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=3D (plist-get arg :to) "DONE")) ;; The state i= s > >> 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 > >> >> > >> > --000000000000aaf15905b44fcc1b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thank you! Ok, now it works. I had to restart my Emacs, pr= obably that was the problem.

So from now on, all the DON= E tasks would be archived straight away on the day they are DONE. What abou= t the previously=C2=A0LOGGED tasks?
Is there a way to do the same= with all the logged items under the :LOGBOOK: that have been DONE before?<= /div>

I have thousands of such instances, and I wonder i= f a function would find all those items inside the LOGBOOKS and archive the= m individually under their own DONE date in the org archive file. Maybe too= much to ask! :)
GM


El mar., 17 nov. 202= 0 a las 18:00, Ihor Radchenko (<ya= ntar92@gmail.com>) escribi=C3=B3:
> Now I get the error: "wrong number of ar= guments..." :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 ()
=C2=A0 "Archive item at point, but do not actually delete it." =C2=A0 (cl-letf (((symbol-function 'org-cut-subtree) (lambda () nil)))<= br> =C2=A0 =C2=A0 (org-archive-subtree)))

(defun org-archive-repeated-task (arg)
=C2=A0 "Add a copy of the recurring task marked DONE to archive."=
=C2=A0 (when (and (eq (plist-get arg :type) 'todo-state-change)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(string=3D (plist-get arg := to) "DONE")) ;; The state is changed to DONE
=C2=A0 =C2=A0 (let* ((pos (plist-get arg :position))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(repeater (org-with-point-at pos (= org-get-repeat))))
=C2=A0 =C2=A0 =C2=A0 (when repeater ;; Only consider tasks with repeater ti= mestamp anywhere in the task body
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (my/org-archive-without-delete)))))

(add-hook 'org-trigger-hook #'org-archive-repeated-task)

Best,
Ihor

Gerardo Moro <gerardomoro37@gmail.com> 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=C3=B3:
>
>> > I tried this but I get: "symbol's function definitio= n is void:
>> >=C2=A0 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 <gerardomoro37@gmail.com> writes:
>>
>> > Thanks for the prompt reply!
>> > I tried this but I get: "symbol's function definitio= n is void:
>> >=C2=A0 org-trigger-doing"
>> >
>> > El mar., 17 nov. 2020 a las 14:32, Ihor Radchenko (<yantar92@gmail.com>= ;)
>> > escribi=C3=B3:
>> >
>> >> > 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 b= e also useful to
>> them
>> >> > (which I definitely think it is!).
>> >>
>> >> Try the following code. It should archive any repeated ta= sk once it is
>> >> marked DONE.
>> >>
>> >> (defun org-archive-repeated-task (arg)
>> >>=C2=A0 =C2=A0"Add a copy of the recurring task marked= DONE to archive."
>> >>=C2=A0 =C2=A0(when (and (eq (plist-get arg :type) 'tod= o-state-change)
>> >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (string= =3D (plist-get arg :to) "DONE")) ;; The state is
>> changed
>> >> to DONE
>> >>=C2=A0 =C2=A0 =C2=A0(let* ((pos (plist-get arg :position))=
>> >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (repeater (org-w= ith-point-at pos (org-get-repeat))))
>> >>=C2=A0 =C2=A0 =C2=A0 =C2=A0(when repeater ;; Only consider= tasks with repeater timestamp
>> >> anywhere in the task body
>> >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(my/org-archive-without-= delete)))))
>> >> (add-hook 'org-trigger-hook #'org-trigger-doing)<= br> >> >>
>> >> Best,
>> >> Ihor
>> >>
>>
--000000000000aaf15905b44fcc1b--