Re: [Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-12 Thread Carsten Dominik


On Oct 12, 2009, at 2:39 PM, Robert Goldman wrote:


Nick Dokos wrote:

Robert P. Goldman  wrote:

...

Robert Goldman  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.


...

Apologies for jumping in without the whole context (I'm buried with  
work

and I have not been able to even read the whole thread). I'm not sure
how to do #1 and #3 above, but I believe that #2 can be done with the
mapping API (see section A.10 of the org manual) - something like  
this
(untested and too simple as it stands - probably won't handle  
headlines

without a todo keyword correctly):

(org-map-entries (lambda () (org-todo "TODO")) t 'tree)

but it may be worth a try. It may even be possible to extend it to do
the other stuff.


Thanks, that's very helpful.  That is indeed what I'm looking for  
--- I

had been thinking in terms of string replacement, but this reminds me
that there are functions that address org trees semantically, based on
the meaning of the entries.

In addition to org-todo, there's also org-reset-checkbox-state- 
subtree.
I haven't yet found anything that will find an org-note (so that it  
can

be removed), but I will look more carefully.


You should be logging into a drawer - drawer are much easier
to find than individual notes.

- Carsten



___
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


Re: [Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-12 Thread Robert Goldman
Nick Dokos wrote:
> Robert P. Goldman  wrote:
> 
> ...
 Robert Goldman  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.
>
> ...
> 
> Apologies for jumping in without the whole context (I'm buried with work
> and I have not been able to even read the whole thread). I'm not sure
> how to do #1 and #3 above, but I believe that #2 can be done with the
> mapping API (see section A.10 of the org manual) - something like this
> (untested and too simple as it stands - probably won't handle headlines
> without a todo keyword correctly):
> 
> (org-map-entries (lambda () (org-todo "TODO")) t 'tree)
> 
> but it may be worth a try. It may even be possible to extend it to do
> the other stuff.

Thanks, that's very helpful.  That is indeed what I'm looking for --- I
had been thinking in terms of string replacement, but this reminds me
that there are functions that address org trees semantically, based on
the meaning of the entries.

In addition to org-todo, there's also org-reset-checkbox-state-subtree.
 I haven't yet found anything that will find an org-note (so that it can
be removed), but I will look more carefully.

With all of these, it should be possible to put together what I want.

best,
r


___
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


Re: [Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-11 Thread Nick Dokos
Robert P. Goldman  wrote:

...
> > > Robert Goldman  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.
> > >>
...

Apologies for jumping in without the whole context (I'm buried with work
and I have not been able to even read the whole thread). I'm not sure
how to do #1 and #3 above, but I believe that #2 can be done with the
mapping API (see section A.10 of the org manual) - something like this
(untested and too simple as it stands - probably won't handle headlines
without a todo keyword correctly):

(org-map-entries (lambda () (org-todo "TODO")) t 'tree)

but it may be worth a try. It may even be possible to extend it to do
the other stuff.

HTH,
Nick

 


___
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


[Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-11 Thread Bernt Hansen
Robert P. Goldman  writes:

> Bernt Hansen  norang.ca> writes:
>
>> 
>> Paul Mead  gmail.com> writes:
>> 
>> > Robert Goldman  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  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>
| - [ ]

[Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-11 Thread Robert P . Goldman
Bernt Hansen  norang.ca> writes:

> 
> Paul Mead  gmail.com> writes:
> 
> > Robert Goldman  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,
best,
r




___
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


[Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-11 Thread Gregory J. Grubbs
Robert Goldman  writes:

> 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.

I think automating a task that annoys you is worth the trouble.  You
could at least start with something like the following, and flesh it out
to include drawer notes and check lists.

--8<---cut here---start->8---
(defun gjg/org-reset-todo ()
  "reset any task from point onward with a TODO keyword to
initial TODO state. Show all trees you want to reset before
running this command: hidden trees will not be touched"
  (interactive)
  (save-excursion
(while (not (eobp))
  (outline-next-visible-heading 1)
  (if  (org-get-todo-state)
  (org-todo "TODO")
--8<---cut here---end--->8---



___
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


[Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-11 Thread Bernt Hansen
Paul Mead  writes:

> Robert Goldman  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.

HTH,
Bernt


___
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


[Orgmode] Re: "clearing" the state of an org-mode subtree

2009-10-11 Thread Paul Mead
Robert Goldman  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.

Paul



___
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode