I often ask questions, or complain about things (or both at the same time), so it's nice to share something.
I was making a block agenda, splitting up tasks by location (loosely inspired by GTD). But I realized that I didn't want to see items that are scheduled for the future, because this is my agenda view for "what tasks are available right now." For example, if I have a task to update my grade sheet, it doesn't make sense to do that before I've taught the lessons -- so I don't want to see the task until it's actually due. I didn't find a straightforward way to use a property search such as "scheduled is nil or scheduled > today," but I did (with some false starts) hack up a skip function that seems to do the job. So, in the relevant blocks, I have (org-agenda-skip-function 'hjh-skip-future-scheduled), and... perfect. (I'm sure it's not the most efficient, but I found elisp's time comparisons to be confusing, and I didn't want to consider time-of-day either. Performance is OK for my use.) hjh ; agenda skip function to remove items scheduled for a future date (defun hjh-skip-future-scheduled () "Skip trees that are scheduled in the future" (let* ((subtree-end (save-excursion (org-end-of-subtree t))) (schedprop (cdr (assoc "SCHEDULED" (org-entry-properties)))) (schedymd (if(stringp schedprop) (substring schedprop 0 10)))) (if schedymd (if (string< (format-time-string "%Y-%m-%d" (current-time)) schedymd) subtree-end nil) nil)))