summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Dominik <carsten.dominik@gmail.com>2010-11-25 16:52:40 +0100
committerCarsten Dominik <carsten.dominik@gmail.com>2010-11-25 17:00:57 +0100
commit341e9ce1d7085316c78d92f19790ad828c15731e (patch)
tree4979b5edaa98e87723ff21ad777ddd2ee8031356
parent9cc19e3919ab5904d71088e10dd2943d5afd476a (diff)
downloadorg-mode-341e9ce1d7085316c78d92f19790ad828c15731e.tar.gz
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.
-rw-r--r--doc/org.texi5
-rw-r--r--lisp/org-capture.el34
2 files changed, 30 insertions, 9 deletions
diff --git a/doc/org.texi b/doc/org.texi
index f391e84..312d771 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -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.
diff --git a/lisp/org-capture.el b/lisp/org-capture.el
index 2abe5c7..c707e9c 100644
--- a/lisp/org-capture.el
+++ b/lisp/org-capture.el
@@ -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
-
-