È possibile presentare un modello di acquisizione in un sottotitolo di un giorno in un datetree?


8

In modalità Org, vorrei che un modello di acquisizione venisse archiviato in questo modo:

* 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

È possibile fuori dagli schemi? In caso contrario, qualche idea su come implementarla?


Non sono del tutto chiaro su cosa vuoi ottenere. Perché c'è un "problema" nella riga che dice **** Todo today? Sarebbe bello se potessi estendere il tuo post per includere (1) un esempio dell'output attualmente prodotto dal tuo modello di acquisizione, (2) un esempio separato dell'output che vorresti vedere e (3) il modello di acquisizione stesso . Oltre a questo, benvenuto su Emacs.SE!
è

Non so come ottenere quella linea tra il titolo del datetree ( 2015-05-21 Thursday) e il titolo prodotto dal template ( TODO something). Fondamentalmente, ciò di cui ho bisogno è file+datetree+olp.
Max Hollmann,

Nel caso in cui hai visto la risposta che ho pubblicato in precedenza: non ha affrontato completamente il tuo caso d'uso, nel senso che ha inserito **** Todo todayun'intestazione per ogni TODOelemento creato utilizzando org-capture. Da allora ho risolto questo problema; per favore dai un'altra occhiata alla mia risposta.
itsjeyd

Risposte:


11

Puoi ottenere ciò che desideri definendo una funzione personalizzata che restituisce la posizione di destinazione per l'espansione del modello:

(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)))

Quindi imposta il modello in questo modo:

(setq org-capture-templates
      '(("t" "Test" plain (file+function "~/org/test.org"
                                         org-find-heading-in-datetree)
         "***** TODO %?")))

1
calendar-current-dateè inizialmente gregoriano, quindi non è necessario convertirsi da org-todayin gregoriano.
elenco delle leggi del

@lawlist Grazie per averlo sottolineato! Ho aggiornato la mia risposta.
itsjeyd

1
Questo ha funzionato quasi per me. Il problema era che si sarebbe aggiunto il "***** Todo oggi", ma poi il "***** TODO" sarebbe al di fuori della serie di dati. È stato in grado di risolvere questo comportamento cambiando (goto-char (point-max)) in (goto-char (point-at-eol))
rking
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.