|
@@ -562,6 +562,33 @@ See also the variable `org-agenda-tags-todo-honor-ignore-options'."
|
|
|
:group 'org-agenda-todo-list
|
|
|
:type 'boolean)
|
|
|
|
|
|
+(defcustom org-agenda-todo-ignore-timestamp nil
|
|
|
+ "Non-nil means don't show entries with a timestamp.
|
|
|
+This applies when creating the global todo list.
|
|
|
+Valid values are:
|
|
|
+
|
|
|
+past Don't show entries for today or in the past.
|
|
|
+
|
|
|
+future Don't show entries with a timestamp in the future.
|
|
|
+ The idea behind this is that if it has a future
|
|
|
+ timestamp, you don't want to think about it until the
|
|
|
+ date.
|
|
|
+
|
|
|
+all Don't show any entries with a timestamp in the global todo list.
|
|
|
+ The idea behind this is that by setting a timestamp, you
|
|
|
+ have already \"taken care\" of this item.
|
|
|
+
|
|
|
+See also `org-agenda-todo-ignore-with-date'.
|
|
|
+See also the variable `org-agenda-tags-todo-honor-ignore-options' if you want
|
|
|
+to make his option also apply to the tags-todo list."
|
|
|
+ :group 'org-agenda-skip
|
|
|
+ :group 'org-agenda-todo-list
|
|
|
+ :type '(choice
|
|
|
+ (const :tag "Ignore future timestamp todos" future)
|
|
|
+ (const :tag "Ignore past or present timestamp todos" past)
|
|
|
+ (const :tag "Ignore all timestamp todos" all)
|
|
|
+ (const :tag "Show timestamp todos" nil)))
|
|
|
+
|
|
|
(defcustom org-agenda-todo-ignore-scheduled nil
|
|
|
"Non-nil means, ignore some scheduled TODO items when making TODO list.
|
|
|
This applies when creating the global todo list.
|
|
@@ -632,7 +659,8 @@ to make his option also apply to the tags-todo list."
|
|
|
"Non-nil means honor todo-list ...ignore options also in tags-todo search.
|
|
|
The variables
|
|
|
`org-agenda-todo-ignore-with-date',
|
|
|
- `org-agenda-todo-ignore-scheduled'
|
|
|
+ `org-agenda-todo-ignore-timestamp',
|
|
|
+ `org-agenda-todo-ignore-scheduled',
|
|
|
`org-agenda-todo-ignore-deadlines'
|
|
|
make the global TODO list skip entries that have time stamps of certain
|
|
|
kinds. If this option is set, the same options will also apply for the
|
|
@@ -4435,7 +4463,8 @@ the documentation of `org-diary'."
|
|
|
"Do we have a reason to ignore this TODO entry because it has a time stamp?"
|
|
|
(when (or org-agenda-todo-ignore-with-date
|
|
|
org-agenda-todo-ignore-scheduled
|
|
|
- org-agenda-todo-ignore-deadlines)
|
|
|
+ org-agenda-todo-ignore-deadlines
|
|
|
+ org-agenda-todo-ignore-timestamp)
|
|
|
(setq end (or end (save-excursion (outline-next-heading) (point))))
|
|
|
(save-excursion
|
|
|
(or (and org-agenda-todo-ignore-with-date
|
|
@@ -4458,7 +4487,29 @@ the documentation of `org-diary'."
|
|
|
(> (org-days-to-time (match-string 1)) 0))
|
|
|
((eq org-agenda-todo-ignore-deadlines 'past)
|
|
|
(<= (org-days-to-time (match-string 1)) 0))
|
|
|
- (t (org-deadline-close (match-string 1)))))))))
|
|
|
+ (t (org-deadline-close (match-string 1)))))
|
|
|
+ (and org-agenda-todo-ignore-timestamp
|
|
|
+ (let ((buffer (current-buffer))
|
|
|
+ (regexp
|
|
|
+ (concat
|
|
|
+ org-scheduled-time-regexp "\\|" org-deadline-time-regexp))
|
|
|
+ (start (point)))
|
|
|
+ ;; Copy current buffer into a temporary one
|
|
|
+ (with-temp-buffer
|
|
|
+ (insert-buffer-substring buffer start end)
|
|
|
+ (goto-char (point-min))
|
|
|
+ ;; Delete SCHEDULED and DEADLINE items
|
|
|
+ (while (re-search-forward regexp end t)
|
|
|
+ (delete-region (match-beginning 0) (match-end 0)))
|
|
|
+ (goto-char (point-min))
|
|
|
+ ;; No search for timestamp left
|
|
|
+ (when (re-search-forward org-ts-regexp nil t)
|
|
|
+ (cond
|
|
|
+ ((eq org-agenda-todo-ignore-timestamp 'future)
|
|
|
+ (> (org-days-to-time (match-string 1)) 0))
|
|
|
+ ((eq org-agenda-todo-ignore-timestamp 'past)
|
|
|
+ (<= (org-days-to-time (match-string 1)) 0))
|
|
|
+ (t))))))))))
|
|
|
|
|
|
(defconst org-agenda-no-heading-message
|
|
|
"No heading for this item in buffer or region.")
|