Allow inactive timestamps in org-expiry

* contrib/lisp/org-expiry.el (org-expiry-inactive-timestamps): New option.
(org-expiry-insert-created):
(org-expiry-insert-expiry): Honor `org-expiry-inactive-timestamps'.

Attached is a patch to org-expiry.el in contrib/lisp to allow a
customization of the timestamps inserted by org-expiry for 'CREATED'
and 'EXPIRED' properties.

This patch is what is attached to the message displayed at [1]. I have
been using this patch for a while and it works fine. From searching it
looks like this patch was 'forgotten', but I may have overlooked
something.

If the patch was rejected, you can ignore me. If it was forgotten I'd
like to request to include it.

Thx,
marcel
This commit is contained in:
Marcel van der Boom 2011-03-28 22:21:49 +00:00 committed by Carsten Dominik
parent fa12fe82e9
commit 7c4360823a
1 changed files with 27 additions and 13 deletions

View File

@ -81,6 +81,11 @@
:tag "Org Expiry"
:group 'org)
(defcustom org-expiry-inactive-timestamps nil
"Insert inactive timestamps for the created and expired time properties"
:type 'boolean
:group 'org-expiry)
(defcustom org-expiry-created-property-name "CREATED"
"The name of the property for setting the creation date."
:type 'string
@ -283,21 +288,25 @@ to today's date. With two `C-u' prefixes, prompt the user for to
update the date."
(interactive "P")
(let* ((d (org-entry-get (point) org-expiry-created-property-name))
d-time d-hour)
d-time d-hour timestr)
(when (or (null d) arg)
;; update if no date or non-nil prefix argument
;; FIXME Use `org-time-string-to-time'
(setq d-time (if d (apply 'encode-time (org-parse-time-string d))
(setq d-time (if d (org-time-string-to-time d)
(current-time)))
(setq d-hour (format-time-string "%H:%M" d-time))
(setq timestr
;; two C-u prefixes will call org-read-date
(if (equal arg '(16))
(concat "<" (org-read-date
nil nil nil nil d-time d-hour) ">")
(format-time-string (cdr org-time-stamp-formats))))
;; maybe transform to inactive timestamp
(if org-expiry-inactive-timestamps
(setq timestr (concat "[" (substring timestr 1 -1) "]")))
(save-excursion
(org-entry-put
(point) org-expiry-created-property-name
;; two C-u prefixes will call org-read-date
(if (equal arg '(16))
(concat "<" (org-read-date
nil nil nil nil d-time d-hour) ">")
(format-time-string (cdr org-time-stamp-formats))))))))
(point) org-expiry-created-property-name timestr)))))
(defun org-expiry-insert-expiry (&optional today)
"Insert a property with the expiry date.
@ -306,15 +315,20 @@ and insert today's date."
(interactive "P")
(let* ((d (org-entry-get (point) org-expiry-expiry-property-name))
d-time d-hour)
(setq d-time (if d (apply 'encode-time (org-parse-time-string d))
(setq d-time (if d (org-time-string-to-time d)
(current-time)))
(setq d-hour (format-time-string "%H:%M" d-time))
(setq timestr (if today
(format-time-string (cdr org-time-stamp-formats))
(concat "<" (org-read-date
nil nil nil nil d-time d-hour) ">")))
;; maybe transform to inactive timestamp
(if org-expiry-inactive-timestamps
(setq timestr (concat "[" (substring timestr 1 -1) "]")))
(save-excursion
(org-entry-put
(point) org-expiry-expiry-property-name
(if today (format-time-string (cdr org-time-stamp-formats))
(concat "<" (org-read-date
nil nil nil nil d-time d-hour) ">"))))))
(point) org-expiry-expiry-property-name timestr))))
;;; Functions to process expired entries: