summaryrefslogtreecommitdiff
path: root/lisp/org-datetree.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/org-datetree.el')
-rw-r--r--lisp/org-datetree.el74
1 files changed, 38 insertions, 36 deletions
diff --git a/lisp/org-datetree.el b/lisp/org-datetree.el
index 0646c3b..a97a9d0 100644
--- a/lisp/org-datetree.el
+++ b/lisp/org-datetree.el
@@ -1,6 +1,6 @@
;;; org-datetree.el --- Create date entries in a tree
-;; Copyright (C) 2009-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2015 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -39,7 +39,8 @@ property (any value), the date tree will become a subtree under that entry,
so the base level will be properly adjusted.")
(defcustom org-datetree-add-timestamp nil
- "When non-nil, add a time stamp when create a datetree entry."
+ "When non-nil, add a time stamp matching date of entry.
+Added time stamp is active unless value is `inactive'."
:group 'org-capture
:version "24.3"
:type '(choice
@@ -53,23 +54,22 @@ so the base level will be properly adjusted.")
If KEEP-RESTRICTION is non-nil, do not widen the buffer.
When it is nil, the buffer will be widened to make sure an existing date
tree can be found."
- (let ((year (nth 2 date))
- (month (car date))
- (day (nth 1 date)))
- (org-set-local 'org-datetree-base-level 1)
- (or keep-restriction (widen))
- (goto-char (point-min))
- (save-restriction
- (when (re-search-forward "^[ \t]*:DATE_TREE:[ \t]+\\S-" nil t)
- (org-back-to-heading t)
+ (org-set-local 'org-datetree-base-level 1)
+ (or keep-restriction (widen))
+ (save-restriction
+ (let ((prop (org-find-property "DATE_TREE")))
+ (when prop
+ (goto-char prop)
(org-set-local 'org-datetree-base-level
- (org-get-valid-level (funcall outline-level) 1))
- (org-narrow-to-subtree))
- (goto-char (point-min))
+ (org-get-valid-level (org-current-level) 1))
+ (org-narrow-to-subtree)))
+ (goto-char (point-min))
+ (let ((year (nth 2 date))
+ (month (car date))
+ (day (nth 1 date)))
(org-datetree-find-year-create year)
(org-datetree-find-month-create year month)
- (org-datetree-find-day-create year month day)
- (goto-char (prog1 (point) (widen))))))
+ (org-datetree-find-day-create year month day))))
(defun org-datetree-find-year-create (year)
"Find the YEAR datetree or create it."
@@ -131,28 +131,30 @@ tree can be found."
(org-datetree-insert-line year month day)))))
(defun org-datetree-insert-line (year &optional month day)
- (let ((pos (point)) ts-type)
- (skip-chars-backward " \t\n")
- (delete-region (point) pos)
- (insert "\n" (make-string org-datetree-base-level ?*) " \n")
- (backward-char 1)
- (if month (org-do-demote))
- (if day (org-do-demote))
- (insert (format "%d" year))
- (when month
- (insert (format "-%02d" month))
- (if day
- (insert (format "-%02d %s"
- day (format-time-string
- "%A" (encode-time 0 0 0 day month year))))
- (insert (format " %s"
- (format-time-string
- "%B" (encode-time 0 0 0 1 month year))))))
- (when (and day (setq ts-type org-datetree-add-timestamp))
+ (delete-region (save-excursion (skip-chars-backward " \t\n") (point)) (point))
+ (insert "\n" (make-string org-datetree-base-level ?*) " \n")
+ (backward-char)
+ (when month (org-do-demote))
+ (when day (org-do-demote))
+ (insert (format "%d" year))
+ (when month
+ (insert
+ (format "-%02d" month)
+ (if day
+ (format "-%02d %s"
+ day
+ (format-time-string "%A" (encode-time 0 0 0 day month year)))
+ (format " %s"
+ (format-time-string "%B" (encode-time 0 0 0 1 month year))))))
+ (when (and day org-datetree-add-timestamp)
+ (save-excursion
(insert "\n")
(org-indent-line)
- (org-insert-time-stamp (encode-time 0 0 0 day month year) nil ts-type))
- (beginning-of-line 1)))
+ (org-insert-time-stamp
+ (encode-time 0 0 0 day month year)
+ nil
+ (eq org-datetree-add-timestamp 'inactive))))
+ (beginning-of-line))
(defun org-datetree-file-entry-under (txt date)
"Insert a node TXT into the date tree under DATE."