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.
#'org-deadline
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 doas
org-deadline
is a function.If that’s not what you’re referring to, I apologize.
Can you get the stack trace with
(setq debug-on-error t)
? The error meansrx
got wrong regex form like(rx (** 3 2 "a"))
or(rx (** 3 nil "a"))
.