Karl Fogel <kfo...@red-bean.com> writes:
I'm using the DEADLINE keyword with TODO entries, and I'd like
the DEADLINE date to be displayed as a datestamp next to each
TODO item, when I list deadlined todo items. In other words, I
don't want to have to duplicate the DEADLINE timestamp as a
timestamp on the TODO line itself in my Org Mode file -- since
the timestamp is already present as the value of the DEADLINE
keyword, can't Org Mode just use it?
Assume I have these Org Mode entries:
* STARTED Org Mode scheduling test KIWI.
DEADLINE: <2016-05-23>
* TODO Org Mode scheduling test MELON.
DEADLINE: <2016-05-25>
* STARTED Org Mode scheduling test LIME.
DEADLINE: <2016-05-24>
* STARTED Org Mode scheduling test TARDIGRADE.
SCHEDULED: <2016-05-23> DEADLINE: <2016-06-16>
And I have this custom code to bind "d" to show just the TODO
items that have deadlines, in my `org-agenda' keymap:
(defun ots-org-entry-skip-non-deadline ()
"Return non-nil iff this org entry does not have the
DEADLINE keyword." (if (not (org-entry-get (point)
"DEADLINE"))
(progn (outline-next-heading) (1- (point)))))
(defvar ots-org-agenda-custom-commands-updated-p nil
"If non-nil, we've already updated
`org-agenda-custom-commands',
so don't do it again.") ;; TBD: Oh, could use
`org-add-agenda-custom-command' to do this. (unless
ots-org-agenda-custom-commands-updated-p
(unless (boundp 'org-agenda-custom-commands)
(setq org-agenda-custom-commands ()))
(setq org-agenda-custom-commands
(cons '("d" "Deadlines and scheduled work" alltodo ""
((org-agenda-skip-function
'ots-org-entry-skip-non-deadline)
;; Add code here to control deadline date
display? (org-agenda-prefix-format '((agenda
. " %i %-12:c%?-12t% s")
(timeline . " %
s") (todo . " %i
%-12:c %s") (tags
. " %i %-12:c")
(search . " %i
%-12:c")))
(org-agenda-sorting-strategy
'(deadline-up))))
org-agenda-custom-commands))
(setq ots-org-agenda-custom-commands-updated-p t))
Hi Karl,
Here's a working implementation, using
org-agenda-add-custom-command and the built-in mechanism for
skipping non-deadline entries (you can get rid of
ots-org-entry-skip-non-deadline). I also added some justification
(the -22) to accommodate my rather long timestamp strings. Adjust
as needed:
(org-add-agenda-custom-command
'("d" "Deadlines and scheduled work" alltodo ""
((org-agenda-skip-function '(org-agenda-skip-entry-if
'notdeadline))
(org-agenda-prefix-format '((todo . " %i
%-22(org-entry-get nil \"DEADLINE\") %-12:c %s")))
(org-agenda-sorting-strategy '(deadline-up)))))
Matt