Hey gang, so I’ve been attempting to create a more organized way to capture daily tasks in with org-capture and I’m having trouble figuring out the best way to do so.
The structure I want is the following:
* [%] <2023-11-10>
** [ ] #[A] Some title for a task due today :work:
DEADLINE: <2023-11-10>
The idea would be:
- If a top level heading for today’s date doesn’t exist, create it and create a subheading
- If a top level heading for today’s date does exist, simply just add a subheading.
At first, I had a function I tried to use that didn’t work the way I wanted when I first wrote it. In retrospect, I don’t know why I thought it would.
Then I tried using capture templates but that doesn’t meet the requirements.
In rewriting the function I linked to previously, this is what I have so far:
(defun org-capture::today-task-tree ()
"Create a task tree for tasks TODO today."
(let* ((time-string (format-time-string "<%Y-%m-%d %a>" (current-time)))
(heading-rx
(rx (group "[" (0+ num) "%]") (0+ space)
(group (literal time-string))))
(heading (concat "[%] " time-string)))
(goto-char (point-max))
(if-let (pnt (re-search-backward
heading-rx
nil t))
(progn
(goto-char pnt)
(end-of-line)
(insert "\n")
(insert "** [ ] ")
(beginning-of-line 0))
(goto-char (point-max))
(or (bolp) (insert "\n"))
(insert "* " heading "\n")
(beginning-of-line 0)))))))
Any suggestions? I just learned out the Org Mapping API but I’m not entirely sure if that’ll suit my needs.
The idea would be:
- If a top level heading for today’s date doesn’t exist, create it and create a subheading
- If a top level heading for today’s date does exist, simply just add a subheading.
Take a look at the
file+olp+datetree
target for the capture templates https://orgmode.org/manual/Template-elements.htmlI am not sure how to make it insert an active timestamp though.