;;; 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