diff --git a/doc/org.texi b/doc/org.texi index 6d5d51506..f09d061dc 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -4980,16 +4980,6 @@ happen in the line directly following the headline. When called with a prefix arg, an existing deadline will be removed from the entry. @c FIXME Any CLOSED timestamp will be removed.???????? @c -@kindex C-c / d -@cindex sparse tree, for deadlines -@item C-c / d -@vindex org-deadline-warning-days -Create a sparse tree with all deadlines that are either past-due, or -which will become due within @code{org-deadline-warning-days}. -With @kbd{C-u} prefix, show all deadlines in the file. With a numeric -prefix, check that many days. For example, @kbd{C-1 C-c / d} shows -all deadlines due tomorrow. -@c @kindex C-c C-s @item C-c C-s Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will @@ -5005,6 +4995,24 @@ Mark the current entry for agenda action. After you have marked the entry like this, you can open the agenda or the calendar to find an appropriate date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to schedule the marked item. +@c +@kindex C-c / d +@cindex sparse tree, for deadlines +@item C-c / d +@vindex org-deadline-warning-days +Create a sparse tree with all deadlines that are either past-due, or +which will become due within @code{org-deadline-warning-days}. +With @kbd{C-u} prefix, show all deadlines in the file. With a numeric +prefix, check that many days. For example, @kbd{C-1 C-c / d} shows +all deadlines due tomorrow. +@c +@kindex C-c / b +@item C-c / b +Sparse tree for deadlines and scheduled items before a given date. +@c +@kindex C-c / a +@item C-c / a +Sparse tree for deadlines and scheduled items after a given date. @end table @node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ae44e5ab8..6ce3ae4b1 100755 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -6,6 +6,8 @@ (org-store-log-note): Remove drawer if empty while note is aborted. (org-remove-empty-drawer-at): New function. + (org-check-after-date): New command. + (org-sparse-tree): New sparse tree command "a". * org-exp.el (org-export-as-ascii): Improve export of plain lists. diff --git a/lisp/org.el b/lisp/org.el index 85a7a4195..67317f699 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -9614,17 +9614,21 @@ t Show entries with a specific TODO keyword. m Show entries selected by a tags/property match. p Enter a property name and its value (both with completion on existing names/values) and show entries with that property. -r Show entries matching a regular expression -d Show deadlines due within `org-deadline-warning-days'." +r Show entries matching a regular expression. +d Show deadlines due within `org-deadline-warning-days'. +b Show deadlines and scheduled items before a date. +a Show deadlines and scheduled items after a date." (interactive "P") (let (ans kwd value) - (message "Sparse tree: [/]regexp [t]odo-kwd [m]atch [p]roperty [d]eadlines [b]efore-date") + (message "Sparse tree: [/]regexp [t]odo-kwd [m]atch [p]roperty [d]eadlines [b]efore-date [a]fter-date") (setq ans (read-char-exclusive)) (cond ((equal ans ?d) (call-interactively 'org-check-deadlines)) ((equal ans ?b) (call-interactively 'org-check-before-date)) + ((equal ans ?a) + (call-interactively 'org-check-after-date)) ((equal ans ?t) (org-show-todo-tree '(4))) ((member ans '(?T ?m)) @@ -12130,6 +12134,21 @@ days. If the prefix is a raw \\[universal-argument] prefix, all deadlines are s (message "%d entries before %s" (org-occur regexp nil callback) date))) +(defun org-check-after-date (date) + "Check if there are deadlines or scheduled entries after DATE." + (interactive (list (org-read-date))) + (let ((case-fold-search nil) + (regexp (concat "\\<\\(" org-deadline-string + "\\|" org-scheduled-string + "\\) *<\\([^>]+\\)>")) + (callback + (lambda () (not + (time-less-p + (org-time-string-to-time (match-string 2)) + (org-time-string-to-time date)))))) + (message "%d entries after %s" + (org-occur regexp nil callback) date))) + (defun org-evaluate-time-range (&optional to-buffer) "Evaluate a time range by computing the difference between start and end. Normally the result is just printed in the echo area, but with prefix arg