1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2025-02-08 21:38:10 +00:00

Date tree capture with prompt for date

* doc/org.texi (Template elements): Document the new entry type.

* lisp/org-capture.el (org-capture-templates): Add new option to customize
type and docstring.
(org-capture-set-target-location): Interpret the file+datetree+prompt
entry.
This commit is contained in:
Carsten Dominik 2010-11-25 16:52:40 +01:00
parent 9cc19e3919
commit 341e9ce1d7
2 changed files with 30 additions and 9 deletions

View File

@ -6285,7 +6285,10 @@ For non-unique headings, the full path is safer.
Use a regular expression to position the cursor.
@item (file+datetree "path/to/file")
Will create a heading in a date tree.
Will create a heading in a date tree for today's date.
@item (file+datetree+prompt "path/to/file")
Will create a heading in a date tree, but will prompt for the date.
@item (file+function "path/to/file" function-finding-location)
A function to find the right location in the file.

View File

@ -133,7 +133,10 @@ target Specification of where the captured item should be placed.
File to the entry matching regexp
(file+datetree \"path/to/file\")
Will create a heading in a date tree
Will create a heading in a date tree for today's date
(file+datetree+prompt \"path/to/file\")
Will create a heading in a date tree, promts for date
(file+function \"path/to/file\" function-finding-location)
A function to find the right location in the file
@ -280,6 +283,9 @@ calendar | %:type %:date"
(list :tag "File & Date tree"
(const :format "" file+datetree)
(file :tag " File"))
(list :tag "File & Date tree, prompt for date"
(const :format "" file+datetree+prompt)
(file :tag " File"))
(list :tag "File & function"
(const :format "" file+function)
(file :tag " File ")
@ -640,19 +646,33 @@ already gone."
(setq target-entry-p (and (org-mode-p) (org-at-heading-p))))
(error "No match for target regexp in file %s" (nth 1 target))))
((eq (car target) 'file+datetree)
((memq (car target) '(file+datetree file+datetree+prompt))
(require 'org-datetree)
(set-buffer (org-capture-target-buffer (nth 1 target)))
;; Make a date tree entry, with the current date (or yesterday,
;; if we are extending dates for a couple of hours)
(org-datetree-find-date-create
(calendar-gregorian-from-absolute
(if org-overriding-default-time
(time-to-days org-overriding-default-time)
(cond
(org-overriding-default-time
;; use the overriding default time
(time-to-days org-overriding-default-time))
((eq (car target) 'file+datetree+prompt)
;; prompt for date
(time-to-days (org-read-date
nil t nil "Date for tree entry:"
(time-subtract (current-time)
(list 0 (* 3600
org-extend-today-until)
0)))))
(t
;; current date, possible corrected for late night workers
(time-to-days
(time-subtract (current-time)
(list 0 (* 3600 org-extend-today-until) 0)))))))
(list 0 (* 3600 org-extend-today-until) 0))))))))
((eq (car target) 'file+function)
(set-buffer (org-capture-target-buffer (nth 1 target)))
(funcall (nth 2 target))
@ -1358,5 +1378,3 @@ The template may still contain \"%?\" for cursor positioning."
;; arch-tag: 986bf41b-8ada-4e28-bf20-e8388a7205a0
;;; org-capture.el ends here