From bc75732b9d37b77945a977ee9f7892cf6efc79c3 Mon Sep 17 00:00:00 2001 From: Szymon Szukalski Date: Thu, 9 Apr 2026 10:53:27 +1000 Subject: Refactor Emacs config into modules --- lisp/ss-agenda.el | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 lisp/ss-agenda.el (limited to 'lisp/ss-agenda.el') 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 -- cgit v1.2.3