emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Refiling All 'Terminal TODO State' Entries to a Particular Heading


From: Tim Visher
Subject: Refiling All 'Terminal TODO State' Entries to a Particular Heading
Date: Thu, 6 May 2021 10:23:37 -0400

Hi Everyone,

Partly because I think it's neat and partly to ask for ways that I could improve it I figured I'd share my latest little snippet of org elisp with the list.

I maintain my primary TODO list as an org file with top-level headings like * This Week* Delegated* Scheduled* Deferred, etc. These all contain TODOs or potential TODOs.

Anything I intend to work on near term I refile into * This Week and that's then the primary heading that I'm burning down throughout my day.

I do weekly reflection/projections and 6 week reflection/projections. When I do a weekly reflection I go through another heading * Done to remind myself what I accomplished in the past week. When I do a 6 week reflection/projection I review the Done heading one more time and then I refile all the entries currently there into an * Archive heading. Then every now and then I actually archive entries in Archive into an *.org_archive file. * Done and * Archive are both tagged with ARCHIVE.

In an effort to start automating some of this effort I wrote the following elisp to refile all the Level 2 entries to the Done heading:

(defun timvisher-org-refile-done-entry-position
    ()
  (save-excursion
    (goto-char (point-min))
    (re-search-forward "^\\* Done")))

(defun timvisher-org-refile-done-entry
    ()
  (org-refile nil
              (current-buffer)
              (list "* Done"
                    (buffer-file-name)
                    nil
                    (timvisher-org-refile-done-entry-position))))

(defun timvisher-org-refile-done-entries
    ()
  (interactive)
  (length
   (org-map-entries #'timvisher-org-refile-done-entry
                    "LEVEL=2/+DONE|+CANCELLED"
                    nil
                    'archive)))

I'm doing Level 2 only because for long running projects I tend to have a single Level 2 heading with many subheadings representing the project's breakdown and I don't want them to be refiled out of the project.

Opportunities for improvement would be:

  1. Is there a better way to find the * Done entry than searching for it every time?
  2. Am I using org-refile correctly there? It's functional but it also seems needlessly complicated.

Hope this finds you all well. :)

--

In Christ,

Timmy V.

https://blog.twonegatives.com
http://five.sentenc.es


reply via email to

[Prev in Thread] Current Thread [Next in Thread]