12
votes

I use the org-mode weekly/daily agenda and want to be able to use the SCHEDULED keyword to hide items until the scheduled time comes up. I don't want to think about them until then. How can I set up org-agenda-list to do this?

This is the list of agenda items, not the TODO list. I already have org-agenda-todo-ignore-scheduled set to future. It does not help.

3
We must be misunderstanding your question, because what you're seeking is the default behavior of org mode AFAIK. I've made a simple example of this (using OrgMode version 6.33x). With four items, one with no scheduled date, one scheduled yesterday, one scheduled today, and one scheduled tomorrow, I open agenda list and toggle to day view and go to today (keystrokes "v d ."), I see the item scheduled yesterday (with Sched 2x to indicate it was scheduled yesterday), and I see the item scheduled today. Both the unscheduled and future scheduled item do not appear here - Daniel Kessler
However, if they also have near term deadlines, they will still show up even if scheduled in the future. Any chance some of the items that you don't want to appear have deadlines? If so, there are some other variables/properties I can point you to in order to manipulate that. - Daniel Kessler

3 Answers

9
votes

Set

(setq org-agenda-todo-ignore-scheduled 'future)

and

(setq org-agenda-tags-todo-honor-ignore-options t)
1
votes

You can probably get what you want using org-modes confusing set of parameters but it's probably just easier creating a custom filter function

  (defun my/org-skip-function (part)
    "Partitions things to decide if they should go into the agenda '(agenda future-scheduled done)"
    (let* ((skip (save-excursion (org-entry-end-position)))
           (dont-skip nil)
           (scheduled-time (org-get-scheduled-time (point)))
           (result
            (or (and scheduled-time
                     (time-less-p (current-time) scheduled-time)
                     'future-scheduled)  ; This is scheduled for a future date
                (and (org-entry-is-done-p) ; This entry is done and should probably be ignored
                     'done)
                'agenda)))                 ; Everything else should go in the agenda
      (if (eq result part) dont-skip skip)))
   (setq org-agenda-skip-function '(my/org-skip-function 'agenda))

If you want other filters just add them to the or-block with a different tag.

0
votes

This worked for me:

(setq org-agenda-todo-ignore-with-date t)

From http://orgmode.org/manual/Global-TODO-list.html