3

I need to mark when I need to pay attention to a task in org-mode.

So far, I've been using SCHEDULED for this. In this sense, SCHEDULED may just mean "look at this on this date". This is my way of implementing a variation of of GTD. I know this may be abusing org-mode's SCHEDULED property.

One issue I have is that the model of tasks overlaps two concepts:

  • Tasks that are indeed scheduled to be completed on a particular date.

  • Tasks that I just need to look at on a particular date/period.

I could circumvent this by adding a new TODO state SCHEDULED. So far, instead, I've been using tags such as nextweeklyreview, etc.

This issue manifests when I plan tasks for future weeks: I can only plan them for a specific day (usually the first day of that week), making it look like Monday is going to be awfully busy.

What I really would like to do is to schedule a task for a week, or a month, or a year. I know I can add ranges, but that would make the task show up in red in the agenda if the start date is now past. It's also far too much work.

I want something like:

* A
  SCHEDULED: 2017

Or, alternatively:

* A
  :PROPERTIES:
  ON_DATE_YEAR: 2017
  :END:

Is any of this possible? How can I make it convenient to use?

EDIT (2017/07/09 11:15CET, due to comment received): I really need to schedule a task for a week/month/year. This is not something that, afaik, GTD suggests, but I work best this way.)

3
  • 1
    Have you considered using GTD keywords and then organize your *Org Agenda* search based on one or more of those keywords? Your weekly/yearly stuff does not need to appear on the agenda view unless you want it to. You can have a combined agenda search, or several different searches separated by blocks. For example, you might consider forgetting about using TODO and use something more GTD like: (setq org-todo-keywords '((sequence "Active(a)" "Next Action(n)" "Canceled(c)" "Hold(h)" "Reference(r)" "Delegated(d)" "Waiting(w)" "Postponed(P)" "Someday(s)" "Planning(p)" "|" "None(N)")))
    – lawlist
    Jul 8, 2017 at 23:37
  • What you're suggesting is "adding more structure to TODO keywords", which is what I'm doing with the SCHEDULED thing, isn't it? But that, somehow, is not enough. How do I mark something to be completed 'this week'? Deadline on Sunday? (My weeks go Mon-Sun :) ) (I usually use sparse trees instead of going to Org Agenda btw; I only use the agenda for a fixed schedule/timetable).
    – Ivan Perez
    Jul 9, 2017 at 9:12
  • Another idea would be to write your own sexp for the SCHEDULED: date stackoverflow.com/questions/13555385/… There are a few threads on emacs.stackexchange and stackoverflow of custom sexp that is used by the org-agenda buffer.
    – lawlist
    Jul 9, 2017 at 15:08

2 Answers 2

2

Your question appears to be about several things. For your two issues, use SCHEDULED for "Tasks that I just need to look at on a particular date/period." (works for date, maybe not period). Use DEADLINE for "Tasks that are indeed scheduled to be completed on a particular date.".

If your question is about scheduling things at year or month resolution, not at day resolution, that is not built into the Org Agenda as far as I know. You can add properties though, and then search on properties. Or, you could adapt this existing feature to schedule them with some noise added to the date:

http://sachachua.com/blog/2014/04/org-mode-helps-deal-ever-growing-backlog/

Org has a built-in command for bulk-scattering tasks. From the agenda view, you can type m to mark multiple tasks, then type B and then S to scatter tasks randomly over the next N days. (Call it with a prefix argument as C-u B S to limit it to weekdays.)

2

You can do agenda searches for arbitrary properties. For example if you have an ON_DATE property that looks like either "2017" or "2017-07":

* Look at this
:PROPERTIES:
:ON_DATE:  2017
:END:

* Look this month
:PROPERTIES:
:ON_DATE:  2017-07
:END:

* Don't look at this
:PROPERTIES:
:ON_DATE:  2018
:END:

You can do agenda searches for items with ON_DATE the current year/month by using format-time-string to construct the query:

(add-to-list 'org-agenda-custom-commands
             '("Y" "Year"
              tags (format "ON_DATE=\"%s\""
                           (format-time-string "%Y"))))

(add-to-list 'org-agenda-custom-commands
             '("M" "Year"
              tags (format "ON_DATE=\"%s\""
                           (format-time-string "%Y-%m"))))

Warning: agenda searches for non-special properties are rather slow.

Another solution is to use tags like year2017 month201707 and use the same sort of idea as above to construct the search:

(add-to-list 'org-agenda-custom-commands
             '("M" "Year"
              tags (format "+month%s"
                           (format-time-string "%Y%m"))))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.