emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Bernt Hansen <bernt@norang.ca>
To: "Robert P. Goldman" <rpgoldman@sift.info>
Cc: emacs-orgmode@gnu.org
Subject: Re: "clearing" the state of an org-mode subtree
Date: Sun, 11 Oct 2009 12:46:38 -0400	[thread overview]
Message-ID: <87zl7xvpxt.fsf@gollum.intra.norang.ca> (raw)
In-Reply-To: <loom.20091011T180334-590@post.gmane.org> (Robert P. Goldman's message of "Sun\, 11 Oct 2009 16\:10\:39 +0000 \(UTC\)")

Robert P. Goldman <rpgoldman@sift.info> writes:

> Bernt Hansen <bernt <at> norang.ca> writes:
>
>> 
>> Paul Mead <paul.d.mead <at> gmail.com> writes:
>> 
>> > Robert Goldman <rpgoldman <at> sift.info> writes:
>> >
>> >> Andrew Stribblehill wrote:
>> >>> org-mode files are plain text. M-% to do a replacement: once you've
>> >>> entered your search term and its replacement, hit ! to replace all
>> >>> without question.
>> >>
>> >> Yes, one can do this, but note that it's not entirely a no-brainer.  You
>> >> need to:
>> >>
>> >> 1.  clear all the check boxes and then recompute all checkbox counts in
>> >> the region.  [this isn't a simple tag replacement]
>> >>
>> >> 2.  replace all non-TODO keywords with TODO.  This is a replacement, but
>> >> not a simple one to do with M-%
>> >>
>> >> 3.  Wipe out all of the notes that were added with state changes.
>> >> Again, this can be done with a replacement command, but it's not a
>> >> trivial one.
>> >>
>> >> This is one of those cases where automating a task will not pay back the
>> >> investment (at least not to me, individually), so I think I'd better
>> >> just do it by hand.
>> >>
>> >> Thanks, everyone,
>> >
>> > Have you thought about using yasnippet? I have a repeating set of TODOs
>> > in a particular order that I have to do every month. Rather than reusing
>> > the old structure, I just insert it again from a snippet. That way I
>> > also have all my notes from last month too.
>> 
>> Or copy the subtree _before_ you fill it in with details.  Make a
>> repeating task that is just to copy the subtree at the appropriate time
>> so the subtree is available for the repeat after this one, and then
>> proceed to use one of the copies for the current task iteration.
>
>
> Yes, this would clearly have been The Right Thing had I realized when I built
> the subtree that I might want to use it again.  But I didn't (this seems like a
> specific case of the general "code reuse" problem  --- it's nice if you can
> foresee that you'd like to reuse something but often that does not happen).
>
> The issue about copying, IIUC, is that the template from which one is to copy
> must be kept "out of band" with respect to the agenda.  That is, it must be kept
> somewhere (perhaps in an "org-templates.org" file) where the agenda will not see
> it, and copied from the templates file into a file that is active wrt the
> agenda.  The yasnippet approach fits this.  But again, this is a different use
> case --- one in which the user has had the foresight to realize that a task will
> be used over and over.
>
> Note that no templating approach (automated by yasnippet or not) supports
> learning in the course of this code reuse.  E.g., if I think of something this
> year when I am winterizing, and add that new TODO into my currently active copy
> of the template, then it won't appear next year if I reinvoke the template.
>
> In general, I'm inclined to think that this case is irregular enough that it's
> probably best to simply keep my one working copy and manually clear it every
> year when I need another.  It's probably an AI-complete problem to clear an
> arbitrary hunk of org back to a pristine state!
>
> Thanks for the discussion,

I have a similar setup for my quarterly accounting tasks - I just have
them scheduled a year in advance so they don't bother my agenda views.
I copy that subtree which moves it forward another year.  I keep the
data in-band.

On ** TODO Q1 Accounting 2010

I do C-c C-x c, create 1 clone, and move it forward +1y

This makes 2 copies actually - the one for next year _and_ moves the
repeating task forward another year.  Then All I do is change the year
on the top-level task and I'm done.

Then I can work on the entry without the +1y repeater.

,----[ test2.org ]
| 
| * Accounting
| 
| ** TODO Q1 Accounting 2010
|    SCHEDULED: <2009-11-15 Sun +1y>
|    - Copy subtree
| *** TODO Year End adjustments
|     SCHEDULED: <2009-11-15 Sun>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO October Accounting
|     SCHEDULED: <2009-11-15 Sun>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO November Accounting
|     SCHEDULED: <2009-12-15 Tue>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO December Accounting
|     SCHEDULED: <2010-01-15 Fri>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO File Taxes Oct - Dec
|     SCHEDULED: <2010-01-15 Fri>
`----

After the copy (and editing the years on the Q1 Accounting YYYY task) my
file looks like this:

,----[ test2.org ]
| 
| * Accounting
| 
| ** TODO Q1 Accounting 2010
|    SCHEDULED: <2009-11-15 Sun>
|    - Copy subtree
| *** TODO Year End adjustments
|     SCHEDULED: <2009-11-15 Sun>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO October Accounting
|     SCHEDULED: <2009-11-15 Sun>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO November Accounting
|     SCHEDULED: <2009-12-15 Tue>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO December Accounting
|     SCHEDULED: <2010-01-15 Fri>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO File Taxes Oct - Dec
|     SCHEDULED: <2010-01-15 Fri>
| ** TODO Q1 Accounting 2011
|    SCHEDULED: <2010-11-15 Mon>
|    - Copy subtree
| *** TODO Year End adjustments
|     SCHEDULED: <2010-11-15 Mon>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO October Accounting
|     SCHEDULED: <2010-11-15 Mon>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO November Accounting
|     SCHEDULED: <2010-12-15 Wed>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO December Accounting
|     SCHEDULED: <2011-01-15 Sat>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO File Taxes Oct - Dec
|     SCHEDULED: <2011-01-15 Sat>
| ** TODO Q1 Accounting 2012
|    SCHEDULED: <2011-11-15 Tue +1y>
|    - Copy subtree
| *** TODO Year End adjustments
|     SCHEDULED: <2011-11-15 Tue>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO October Accounting
|     SCHEDULED: <2011-11-15 Tue>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO November Accounting
|     SCHEDULED: <2011-12-15 Thu>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO December Accounting
|     SCHEDULED: <2012-01-15 Sun>
|     - [ ] Step 1
|     - [ ] Step 2
|     - [ ] Step 3
| 	  ...
|     - [ ] Step n
| 
| *** TODO File Taxes Oct - Dec
|     SCHEDULED: <2012-01-15 Sun>
`----

HTH,
Bernt

  reply	other threads:[~2009-10-11 16:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-09 21:28 "clearing" the state of an org-mode subtree Robert Goldman
2009-10-09 23:43 ` Andrew Stribblehill
2009-10-10 17:23   ` Darlan Cavalcante Moreira
2009-10-10 17:47   ` Robert Goldman
2009-10-11  9:47     ` Paul Mead
2009-10-11 12:36       ` Bernt Hansen
2009-10-11 16:10         ` Robert P. Goldman
2009-10-11 16:46           ` Bernt Hansen [this message]
2009-10-11 22:21           ` Nick Dokos
2009-10-12 12:39             ` Robert Goldman
2009-10-12 12:46               ` Carsten Dominik
2009-10-11 15:11     ` Gregory J. Grubbs

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=87zl7xvpxt.fsf@gollum.intra.norang.ca \
    --to=bernt@norang.ca \
    --cc=emacs-orgmode@gnu.org \
    --cc=rpgoldman@sift.info \
    /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).