In this post we’ll build on the simple todo list that we put together previously and add schedules and deadlines to our tasks to build a powerful agenda.

When adding a task (with C-c c t ) you can add a scheduled date to it with C-c C-s or a deadline date with C-c C-d , or both. These will pop up a calendar which you can navigate using shift and the arrow keys.

I prefer to schedule all new tasks to today’s date as a default, so I update the org-capture-templates variable to

( setq org-capture-templates ' ( ( "t" "todo" entry ( file+headline "~/todo.org" "Tasks" ) "* TODO [#A] %?

SCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))

" ) ) )

Now when you add a task, you will see a scheduled field like this

** TODO [#A] SCHEDULED: <2015-12-08 Tue>

You can edit the date by putting the cursor in it and using shift + arrow keys.

Now instead of using C-c a t to view your list of tasks, we will use C-c a n to display a list of your scheduled tasks and then any unscheduled tasks below it.

I have several configuration options that I recommend. Add the following to your emacs config file if you like the look of them:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; org-mode agenda options ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; open agenda in current window ( setq org-agenda-window-setup ( quote current-window ) ) ;; warn me of any deadlines in next 7 days ( setq org-deadline-warning-days 7 ) ;; show me tasks scheduled or due in next fortnight ( setq org-agenda-span ( quote fortnight ) ) ;; don't show tasks as scheduled if they are already shown as a deadline ( setq org-agenda-skip-scheduled-if-deadline-is-shown t ) ;; don't give awarning colour to tasks with impending deadlines ;; if they are scheduled to be done ( setq org-agenda-skip-deadline-prewarning-if-scheduled ( quote pre-scheduled ) ) ;; don't show tasks that are scheduled or have deadlines in the ;; normal todo list ( setq org-agenda-todo-ignore-deadlines ( quote all ) ) ( setq org-agenda-todo-ignore-scheduled ( quote all ) ) ;; sort tasks in order of when they are due and then by priority ( setq org-agenda-sorting-strategy ( quote ( ( agenda deadline-up priority-down ) ( todo priority-down category-keep ) ( tags priority-down category-keep ) ( search category-keep ) ) ) )

With these options we get a really useful view of our tasks when using C-c a n . For example, here is a todo.org file with a mixture of tasks with and without schedules and deadlines

* Tasks ** TODO [#A] do this today SCHEDULED: <2015-12-08 Tue> ** TODO [#A] do this tomorrow SCHEDULED: <2015-12-09 Wed> ** TODO [#A] this task is not scheduled ** TODO [#B] scheduled for today, priority B SCHEDULED: <2015-12-08 Tue> ** TODO [#A] scheduled today and deadline in 2 days DEADLINE: <2015-12-10 Thu> SCHEDULED: <2015-12-08 Tue> ** TODO [#A] deadline in 2 days and not scheduled DEADLINE: <2015-12-10 Thu> ** TODO [#A] scheduled for monday SCHEDULED: <2015-12-14 Mon> ** TODO [#C] do this today if I get time SCHEDULED: <2015-12-08 Tue> ** TODO [#B] neither is this one ** TODO [#C] or this one ** TODO [#A] deadline in 10 days and not scheduled DEADLINE: <2015-12-18 Fri>

When I view the agenda associated with this file I see this