diff options
Diffstat (limited to 'lisp/ss-agenda.el')
| -rw-r--r-- | lisp/ss-agenda.el | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lisp/ss-agenda.el b/lisp/ss-agenda.el new file mode 100644 index 0000000..a89a52e --- /dev/null +++ b/lisp/ss-agenda.el @@ -0,0 +1,40 @@ +;;; ss-agenda.el --- Agenda configuration -*- lexical-binding: t; -*- + +;;; Commentary: + +;; Agenda discovery and agenda commands. + +;;; Code: + +(require 'ss-core) +(require 'ss-org) + +(defun ss-refresh-org-agenda-files (&rest _) + "Refresh `org-agenda-files' from the journal and PARA directories. +Ignore any arguments passed by advice wrappers." + (require 'org-agenda) + (setq org-agenda-files + (sort + (delete-dups + (append + (list (ss-require-existing-file ss-journal-file)) + (apply #'append + (mapcar (lambda (directory) + (directory-files-recursively + (ss-require-existing-directory directory) + "\\.org\\'")) + ss-org-agenda-directories)))) + #'string<))) + +(defun ss-open-agenda () + "Refresh agenda files and invoke `org-agenda'." + (interactive) + (call-interactively #'org-agenda)) + +(defun ss-agenda-setup () + "Initialize agenda behavior." + (advice-add 'org-agenda :before #'ss-refresh-org-agenda-files)) + +(provide 'ss-agenda) + +;;; ss-agenda.el ends here |
