Home / Emacs / Org Agenda
Configure!
Simplify frequently used keybindings.
C-s(org-agenda-schedule) tos,C-d(org-agenda-deadline) tod,C-c C-x C-i(org-agenda-clock-in) toi, andC-c C-x C-o(org-agenda-clock-out) too.
(with-eval-after-load 'org-agenda
(keymap-set org-agenda-mode-map "s" #'org-agenda-schedule)
(keymap-set org-agenda-mode-map "d" #'org-agenda-deadline)
(keymap-set org-agenda-mode-map "i" #'org-agenda-clock-in)
(keymap-set org-agenda-mode-map "o" #'org-agenda-clock-out))
Make n (next) and p (previous) move by agenda items instead of lines.
Note. Originally, per-item movement is bound to the capital letters N and
P.
(with-eval-after-load 'org-agenda
(keymap-set org-agenda-mode-map "n" #'org-agenda-next-item)
(keymap-set org-agenda-mode-map "p" #'org-agenda-previous-item))
Move the point to the first item after showing the agenda.
(with-eval-after-load 'org-agenda
(add-hook 'org-agenda-finalize-hook
(lambda ()
(org-agenda-next-item 1)
(recenter-top-bottom))))
Summarize all Org files.
(with-eval-after-load 'org-agenda
(setopt org-agenda-files
(list (file-name-concat org-directory
"obtf.org"))))
???
(with-eval-after-load 'org-agenda
(setopt org-agenda-window-setup 'current-window
org-agenda-skip-deadline-prewarning-if-scheduled t))
Experiment. Do not show future “copies” of repeated tasks.
(with-eval-after-load 'org-agenda
(setopt org-agenda-show-future-repeats nil))
Make C-c a open the agenda buffer.
If the buffer already exist, do not recreate it. Instead, switch to it and refresh its content, in order to maintain the cursor position.
(defun my-org-agenda ()
(interactive)
(if-let* ((buffer (get-buffer "*Org Agenda*")))
(progn (switch-to-buffer buffer)
(org-agenda-redo))
(org-agenda nil "a" nil)))
(keymap-global-set "C-c a" #'my-org-agenda)
Hide the separators.
(with-eval-after-load 'org-agenda
(setopt org-agenda-block-separator nil))
Show tags next to their headings.
(with-eval-after-load 'org-agenda
(setopt org-agenda-align-tags-to-column 0))
Show items with active timestamp first and habits last.
(with-eval-after-load 'org-agenda
(setopt org-agenda-sorting-strategy
'((agenda ts-up habit-down time-up priority-down category-up)
(todo priority-down todo-state-up category-up)
(tags priority-down todo-state-up category-up)
(search category-keep alpha-up))))
Show military time as 09:00 instead of 9:00.
(with-eval-after-load 'org-agenda
(setopt org-agenda-time-leading-zero t))
Hide the time grid to save space.
(with-eval-after-load 'org-agenda
(setopt org-agenda-use-time-grid nil))
Spell out deadlines and scheduled times in full.
(with-eval-after-load 'org-agenda
(setopt org-agenda-deadline-leaders
'("DEADLINE:"
"DEADLINE(-%d):"
"DEADLINE(+%d):")
org-agenda-scheduled-leaders
'(""
"(%d)")))
(with-eval-after-load 'org-agenda
(defun org-agenda-format-date-not-aligned+ (date)
"Format a DATE string like `org-agenda-format-date-aligned' but
without any alignement."
(replace-regexp-in-string
" +" " " (org-agenda-format-date-aligned date))))
;; (with-eval-after-load 'org-agenda (require 'org-habit))
Hide the private tag (not the headings tagged with it).
(with-eval-after-load 'org
(setopt org-agenda-hide-tags-regexp "private"))
(with-eval-after-load 'org-agenda
(setopt
org-agenda-custom-commands
'(("a" "Agenda"
((agenda
""
((org-agenda-overriding-header "Today")
(org-agenda-start-on-weekday nil)
(org-agenda-span 1)
(org-agenda-format-date 'org-agenda-format-date-not-aligned+)
(org-agenda-day-face-function (lambda (_) 'calendar-today))
(org-agenda-dim-blocked-tasks nil)
(org-agenda-skip-function
'(org-agenda-skip-entry-if 'todo 'done))))
(agenda
""
((org-agenda-overriding-header "\nTomorrow")
(org-agenda-start-day "+1d")
(org-agenda-span 1)
(org-agenda-format-date 'org-agenda-format-date-not-aligned+)
(org-agenda-dim-blocked-tasks nil)
(org-habit-show-habits-only-for-today nil)
(org-habit-scheduled-past-days 0)))
(tags-todo
"-TODO=\"WAIT\"+PRIORITY=\"A\""
((org-agenda-overriding-header "\nNext Up")
(org-agenda-todo-ignore-timestamp 'all)
(org-agenda-todo-ignore-scheduled 'all)
(org-habit-show-habits nil)))
(agenda
""
((org-agenda-overriding-header "\nWeek Ahead")
(org-agenda-start-day "+2d")
(org-agenda-start-on-weekday nil)
(org-agenda-span 7)
(org-agenda-dim-blocked-tasks nil)
(org-habit-show-habits nil)))
(tags-todo
"+TODO=\"WAIT\"-PRIORITY=\"C\""
((org-agenda-overriding-header "\nWaiting")
(org-agenda-todo-ignore-timestamp 'all)
(org-agenda-todo-ignore-scheduled 'all)
(org-habit-show-habits nil))))))))
(with-eval-after-load 'org-agenda
(setopt org-agenda-prefix-format "* % c% e%? t%? s"
org-agenda-skip-scheduled-if-deadline-is-shown t
org-agenda-skip-scheduled-if-done t
org-agenda-skip-deadline-if-done t
org-agenda-sort-notime-is-late nil))
???
(with-eval-after-load 'org-agenda
(setopt org-agenda-tags-todo-honor-ignore-options t))
Enforce dependencies in Org and reflect them in Org Agenda.
(with-eval-after-load 'org-agenda
(setopt org-enforce-todo-dependencies t
org-agenda-dim-blocked-tasks 'invisible))
Typeset events in bold to not miss them.
(with-eval-after-load 'org-agenda
(defun org-agenda-theme+ (&optional theme)
(set-face-bold 'org-agenda-calendar-sexp t)))
(with-eval-after-load 'org-agenda (org-agenda-theme+))
(with-eval-after-load 'org-agenda
(add-hook 'enable-theme-functions #'org-agenda-theme+))
Highlight the current line.
(with-eval-after-load 'org-agenda
(add-hook 'org-agenda-mode-hook #'hl-line-mode))