¿Es posible presentar una plantilla de captura en un subtítulo de un día en un árbol de fechas?

8

En el modo Org, me gustaría que una plantilla de captura se almacene así:

* 2015
** 2015-05 May
*** 2015-05-21 Thursday     <--- I can get this with file+datetree
**** Todo today             <--- here's the problem
***** TODO something        <--- this is the captured content

¿Es eso posible fuera de la caja? Si no, ¿alguna idea de cómo implementarlo?

Max Hollmann
fuente
No tengo del todo claro qué es lo que quieres lograr. ¿Por qué hay un "problema" en la línea que dice **** Todo today? Sería genial si pudiera extender su publicación para incluir (1) un ejemplo de la salida que su plantilla de captura produce actualmente, (2) un ejemplo separado de la salida que le gustaría ver y (3) la plantilla de captura en sí . Aparte de eso, bienvenido a Emacs.SE!
itsjeyd
No sé cómo obtener esa línea entre el título de datetree ( 2015-05-21 Thursday) y el título producido por la plantilla ( TODO something). Básicamente, lo que necesito es file+datetree+olp.
Max Hollmann
En caso de que haya visto la respuesta que publiqué anteriormente: no abordó completamente su caso de uso en el sentido de que insertó un **** Todo todayencabezado para cada TODOelemento creado usando org-capture. Desde entonces he solucionado este problema; Por favor, eche un vistazo a mi respuesta.
itsjeyd

Respuestas:

11

Puede lograr lo que desea definiendo una función personalizada que devuelva la ubicación de destino para la expansión de la plantilla:

(defun org-find-heading-in-datetree ()
  (org-datetree-find-date-create (calendar-current-date))
  (goto-char (point-at-eol))
  (when (not (re-search-forward
              (format org-complex-heading-regexp-format
                      (regexp-quote "Todo today")) nil t))
    (insert "\n**** Todo today\n"))
  (goto-char (point-max)))

Luego configure su plantilla de esta manera:

(setq org-capture-templates
      '(("t" "Test" plain (file+function "~/org/test.org"
                                         org-find-heading-in-datetree)
         "***** TODO %?")))
itsjeyd
fuente
1
calendar-current-datees gregoriano desde el principio, por lo que no es necesario convertir de org-todaygregoriano.
leyes
@lawlist ¡Gracias por señalar eso! Actualicé mi respuesta.
itsjeyd
1
Esto casi me funcionó. El problema era que agregaría el "***** Todo hoy" pero luego el "***** TODO" estaría fuera del árbol de fechas. Pude corregir este comportamiento cambiando (goto-char (point-max)) a (goto-char (point-at-eol))
rking el