2012-08-10 2 views
6

Desidero creare un modello di acquisizione dell'organizzazione che crei un nome di file dinamico per l'acquisizione in emacs org-mode.Org-Mode - Come posso creare un nuovo file con org-capture?

voglio che il nome del file assume la seguente forma: (formato-tempo-stringa "% Y-% m-% d") "-" (prompt per un nome) ".txt"

Esempio: 2012-08-10-MyNewFile.txt

sulla base di this risposta, io so come creare dinamicamente il nome del file per includere la data:

`(defun capture-report-date-file (path) 
(expand-file-name (concat path (format-time-string "%Y-%m-%d") ".txt"))) 

'(("t" "todo" entry (file (capture-report-date-file "~/path/path/name")) 
"* TODO"))) 

Questo mi permette di creare un file 2012-08-10.txt e inserire * TODO nella prima riga

Come posso aggiungere un prompt per completare il nome del file?

risposta

9

È necessario utilizzare (read-string ...) in capture-report-data-file per generare il nome file al volo.

(defun capture-report-data-file (path) 
    (let ((name (read-string "Name: "))) 
    (expand-file-name (format "%s-%s.txt" 
           (format-time-string "%Y-%m-%d") 
           name) path))) 

'(("t" 
    "todo" 
    entry 
    (file (capture-report-date-file "~/path/path/name")) 
    "* TODO"))) 

Questo richiederà di acquisire il nome del file e quindi di aprire il buffer di acquisizione verrà creato.

+0

Grazie mille Jonathan. È perfetto. – sam