Hello, friends!
So I have a complex way of capturing TODO tasks for today or week. Someone will probably tell me that there’s a package out there somewhere to do this easier, but regardless I would like to figure this out.
Here’s the function I use:
(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 (concat "[%] " time-string))
(heading-rx
(rx (group "[" (0+ num) "%]") (0+ space)
(group (literal time-string)))))
(goto-char (point-max))
(if-let (pnt (re-search-backward
heading-rx
nil t))
(goto-char pnt)
(goto-char (point-max))
(or (bolp) (insert "\n"))
(insert "* " heading "\n")
(beginning-of-line 0))
(org-end-of-subtree)))
And here’s the org-capture-templates
entry:
("gt" "Today: A task for today" entry
(file+function
,(expand-file-name "~/Documents/Org/GTD/work.org")
org-capture::today-task-tree)
(file ,(concat my-emacs-dir "capture-templates/datetree-weekly-tasks.tmplt"))
:empty-lines-after 1
:after-finalize (lambda () (org-update-statistics-cookies t)))
And here’s the actual capture template that I store in a file in my config:
** [ ] [#%^{Priority}] %^{Task name} %(funcall-interactively #'org-deadline nil (current-time)) %^g
%? %i
Now when I’m in that file ~/Documents/Org/GTD/work.org
and I run the above function with M-: org-capture::today-task-tree
it works fine. An example of what the file will look like it:
* [100%] 2024-04-27 Mon
** [X] Do something important this Monday #[A] :work:
CLOSED: 2024-04-27 Mon 12:42 DEADLINE: 2024-04-27 Mon
* [%] 2024-04-28 Tues
** [ ] Do something else that's not as important #[B] :personal:
DEADLINE: 2024-04-27
But for whatever reason when I run org-capture
and finish the capture with C-c C-c
or refile with C-c C-w
I get
rx--translate-bounded-repetition: rx ‘**’ range error
Which I don’t really know what that means nor how to fix it, and I can’t really find anything useful via searching the internet at the moment. A possible thing to not is that I disable Org’s element caching.
If you want to look at my configuration to dig around some, you can find it here and the part where my configurations for Org-Mode are here.
Hello friend. I have no idea what any of this means as I am browsing new/all, but here you go.
Is that lonely ’ supposed to be there? If yes, then don’t mind me and good luck with it!
I’m not 100% sure what you’re referring to, but having
#'
before a function is is to tell the reader/compiler that you’re specifically referring to the function of the name that comes after it. You could just do'
and that works in Emacs Lisp, but it’s more technically correct in this case to do#'
asorg-deadline
is a function.If that’s not what you’re referring to, I apologize.