This worked a treat, and I learned a bit more. Thanks so much! -- Steen
> On Feb 28, 2018, at 7:35 PM, John Kitchin <jkitc...@andrew.cmu.edu> wrote: > > You probably want this: > > #+BEGIN_SRC emacs-lisp > (defun my-redo () > (interactive) > (org-map-entries > (lambda () > (org-todo "TODO")) > "TODO=\"DONE\"" ;; the match argument > 'tree)) ;; the scope > #+END_SRC > > Then call: > > M-x my-redo > > in the tree you want to reset. > > > > John > > ----------------------------------- > Professor John Kitchin > Doherty Hall A207F > Department of Chemical Engineering > Carnegie Mellon University > Pittsburgh, PA 15213 > 412-268-7803 > @johnkitchin > http://kitchingroup.cheme.cmu.edu > > > On Wed, Feb 28, 2018 at 4:36 PM, mediapathic steen <mediapat...@gmail.com> > wrote: > I have a subtree that contains a daily list of things to do (which I keep as > TODOs rather than checklist form for more granular time tracking). I want to > reset all of the DONE to TODO every day when I start it. Right now I have > this piece of code I copypasted from somewhere now lost (possibly this very > group): > > (org-map-entries (lambda () > (when > (string= > (nth 2 (org-heading-components)) "DONE") > (org-todo "TODO")))) > > This more or less makes sense to me. I have this code sitting in the subtree, > and in order to do my daily reset, I edit the subtree in an indirect buffer, > eval-region the code, then kill the buffer. > > What I would like to accomplish: > 1) Can you help me understand how to modify this code so that it only applies > to the subtree it's run in (parents also would be fine in this case but not > necessary and seems more of a challenge)? Doing the indirect buffer thing > seems more hassle than is reasonable. > > 2) I think I understand how to put this in my init in such a way that I can > C-x invoke it, rather than having to eval-region it, but I'm not certain. Can > you point me toward a reasonable tutorial or hints on how to do that in > general? > > Thanks in advance, > -- Steen >