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
next prev parent 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
* 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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.