From 2379ea91c61df56901be31936b71028628cdae53 Mon Sep 17 00:00:00 2001 From: Lucas Sta Maria Date: Sat, 30 Dec 2023 12:04:22 -0500 Subject: [PATCH] feat(emacs): add calendar syncing functionality with org-agenda Signed-off-by: Lucas Sta Maria --- .emacs.d/include/orgconfig.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.emacs.d/include/orgconfig.el b/.emacs.d/include/orgconfig.el index 316cd8f..189b39c 100644 --- a/.emacs.d/include/orgconfig.el +++ b/.emacs.d/include/orgconfig.el @@ -61,5 +61,26 @@ (add-hook 'org-mode-hook #'org-modern-indent-mode 90) (add-hook 'org-agenda-finalize-hook #'org-modern-agenda) +;; Diary-syncing functionality +(defun pull-diary () + "MUST sync the calendars prior to running this command" + (interactive) + (let* ((diary-file-name (expand-file-name "~/.emacs.d/diary")) + (calendar-dir (expand-file-name "~/.calendars/")) + (calendar-file-suffix ".ics") + (calendar-file? (lambda (f) (s-suffix? calendar-file-suffix f))) + (calendar-dir-files (directory-files calendar-dir)) + (calendar-names (-filter calendar-file? calendar-dir-files)) + (calendar-files (-map (lambda (f) (expand-file-name f calendar-dir)) calendar-names))) + (-map (lambda (f) + (icalendar-import-file f diary-file-name) + (find-file f) + (kill-buffer)) + calendar-files) + (find-file diary-file-name) + (delete-duplicate-lines (point-min) (point-max)) + (save-buffer) + (kill-buffer))) + (provide 'orgconfig) ;;; orgconfig.el ends here