This patch series splits the org-dailies functionality from the feature-org-roam, to allow users to have similar org-dailies outside org-roam. Nicolas Graves (3): feature: emacs-org-roam: Delete duplicate definition. rde: Add feature emacs-org-dailies. feature: emacs-org-roam: Properly integrate with feature-org-dailies. src/rde/features/emacs-xyz.scm | 115 ++++++++++++++++++++++++--------- 1 file changed, 86 insertions(+), 29 deletions(-) -- 2.41.0
Copy & paste the following snippet into your terminal to import this patchset into git:
curl -s https://lists.sr.ht/~abcdw/rde-devel/patches/44892/mbox | git am -3Learn more about email & git
org-roam-dailies-directory was defined twice in the feature-emacs-org-roam. --- src/rde/features/emacs-xyz.scm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/rde/features/emacs-xyz.scm b/src/rde/features/emacs-xyz.scm index 4be38b7d..112f0154 100644 --- a/src/rde/features/emacs-xyz.scm +++ b/src/rde/features/emacs-xyz.scm @@ -4557,10 +4557,6 @@ the node, relative to `org-roam-directory'." ,@(if org-roam-capture-templates `((setq org-roam-capture-templates ',org-roam-capture-templates)) - '()) - - ,@(if org-roam-dailies-directory - `((setq org-roam-dailies-directory ,org-roam-dailies-directory)) '())) ,@(if org-roam-file-exclude-regexp -- 2.41.0
--- src/rde/features/emacs-xyz.scm | 52 +++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/src/rde/features/emacs-xyz.scm b/src/rde/features/emacs-xyz.scm index 112f0154..316470b9 100644 --- a/src/rde/features/emacs-xyz.scm +++ b/src/rde/features/emacs-xyz.scm @@ -111,6 +111,7 @@ feature-emacs-org feature-emacs-org-roam feature-emacs-org-agenda + feature-emacs-org-dailies feature-emacs-citar feature-emacs-org-protocol feature-emacs-spelling @@ -4450,32 +4451,74 @@ If NODE doesn't exist, create a new org-roam node with REF." (add-hook 'before-save-hook 'rde-org-roam-update-todo-tag) (advice-add 'org-agenda :before 'rde-org-roam-update-todo-files))) +(define* (feature-emacs-org-dailies + #:key + (emacs-org-dailies emacs-org-dailies) + (org-dailies-directory "daily/") + (org-dailies-capture-templates #f)) + "Configure org-dailies for GNU Emacs." + (ensure-pred file-like? emacs-org-dailies) + (ensure-pred maybe-path? org-dailies-directory) + (ensure-pred maybe-list? org-dailies-capture-templates) + + (define emacs-f-name 'org-dailies) + (define f-name (symbol-append 'emacs- emacs-f-name)) + + (define (get-home-services config) + (when (and (not (get-value 'org-roam-dailies? config)) + org-dailies-capture-templates) + (raise + (formatted-message + (G_ "org-dailies package does't handle capture templates for now.")))) + (list + (rde-elisp-configuration-service + emacs-f-name + config + `(,@(if (get-value 'org-roam-dailies? config) + '() + `((require 'org-dailies) + (setq org-dailies-directory ,org-dailies-directory)))) + #:summary "Daily journaling functionality for Emacs" + #:commentary "\ +This feature configure daily journaling functionality, either with org-roam-dailies, +or with a org-roam-less copy of the package." + #:keywords '(convenience) + #:elisp-packages (if (get-value 'org-roam-dailies? config) + '() + (list emacs-org-dailies))))) + + (feature + (name f-name) + (values `((,f-name . #t) + (org-dailies-directory . ,org-dailies-directory) + (org-dailies-capture-templates . ,org-dailies-capture-templates))) + (home-services-getter get-home-services))) + ;; TODO: rewrite to states (define* (feature-emacs-org-roam #:key (emacs-org-roam emacs-org-roam) (org-roam-directory #f) - (org-roam-dailies-directory #f) (org-roam-capture-templates #f) - (org-roam-dailies-capture-templates #f) (org-roam-file-exclude-regexp #f) (org-roam-todo? #f) + (org-roam-dailies? #f) (use-node-types? #t)) "Configure org-roam for GNU Emacs." (ensure-pred file-like? emacs-org-roam) (define (not-boolean? x) (not (boolean? x))) (ensure-pred not-boolean? org-roam-directory) - (ensure-pred maybe-path? org-roam-dailies-directory) (ensure-pred maybe-list? org-roam-capture-templates) (ensure-pred boolean? use-node-types?) - (ensure-pred maybe-list? org-roam-dailies-capture-templates) (ensure-pred maybe-list? org-roam-file-exclude-regexp) (ensure-pred boolean? org-roam-todo?) + (ensure-pred boolean? org-roam-dailies?) (define emacs-f-name 'org-roam) (define f-name (symbol-append 'emacs- emacs-f-name)) (define (get-home-services config) + (if org-roam-dailies? (require-value 'org-dailies-directory config)) (list (rde-elisp-configuration-service emacs-f-name @@ -4627,6 +4670,7 @@ marginalia annotations." (feature (name f-name) (values `((,f-name . ,emacs-org-roam) + (org-roam-dailies? . ,org-roam-dailies?) (org-roam-todo? . ,org-roam-todo?))) (home-services-getter get-home-services))) -- 2.41.0
--- src/rde/features/emacs-xyz.scm | 63 +++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/src/rde/features/emacs-xyz.scm b/src/rde/features/emacs-xyz.scm index 316470b9..d670bc2a 100644 --- a/src/rde/features/emacs-xyz.scm +++ b/src/rde/features/emacs-xyz.scm @@ -4517,6 +4517,14 @@ or with a org-roam-less copy of the package." (define emacs-f-name 'org-roam) (define f-name (symbol-append 'emacs- emacs-f-name)) + (define emacs-org-roam-package + (if org-roam-dailies? + emacs-org-roam + (package/inherit emacs-org-roam + (source (origin (inherit (package-source emacs-org-roam)) + (snippet + '(delete-file "extensions/org-roam-dailies.el"))))))) + (define (get-home-services config) (if org-roam-dailies? (require-value 'org-dailies-directory config)) (list @@ -4594,12 +4602,27 @@ the node, relative to `org-roam-directory'." (define-key map (kbd "C-c r a") 'org-roam-alias-add) (define-key map (kbd "C-c r A") 'org-roam-alias-remove) (define-key map (kbd "C-c r O") 'rde-org-roam-open-ref) - (define-key map (kbd "C-c n N") 'org-roam-dailies-goto-next-note) - (define-key map (kbd "C-c n P") - 'org-roam-dailies-goto-previous-note))) + ,@(if org-roam-dailies? + `((define-key map (kbd "C-c n N") + 'org-roam-dailies-goto-next-note) + (define-key map (kbd "C-c n P") + 'org-roam-dailies-goto-previous-note)) + '()))) ,@(if org-roam-capture-templates `((setq org-roam-capture-templates ',org-roam-capture-templates)) + '()) + + ,@(if org-roam-dailies? + `((with-eval-after-load 'org-roam-dailies + ,@(if org-dailies-capture-templates + `((setq org-roam-dailies-capture-templates + ',(get-value + 'org-dailies-capture-templates + config))) + '()) + (setq org-roam-dailies-directory + ,(get-value 'org-dailies-directory config)))) '())) ,@(if org-roam-file-exclude-regexp @@ -4628,25 +4651,19 @@ the node, relative to `org-roam-directory'." '()))) '()) - (with-eval-after-load 'org-roam-dailies - ,@(if org-roam-dailies-capture-templates - `((setq org-roam-dailies-capture-templates - ',org-roam-dailies-capture-templates)) - '()) - ,@(if org-roam-dailies-directory - `((setq org-roam-dailies-directory - ,org-roam-dailies-directory)) - '())) - (let ((map mode-specific-map)) - (define-key map (kbd "n t") 'org-roam-dailies-goto-today) - (define-key map (kbd "n y") 'org-roam-dailies-goto-yesterday) - (define-key map (kbd "n m") 'org-roam-dailies-goto-tomorrow) - (define-key map (kbd "n d") 'org-roam-dailies-goto-date) - (define-key map (kbd "n c t") 'org-roam-dailies-capture-today) - (define-key map (kbd "n c y") 'org-roam-dailies-capture-yesterday) - (define-key map (kbd "n c m") 'org-roam-dailies-capture-tomorrow) - (define-key map (kbd "n c d") 'org-roam-dailies-capture-date) + ,@(if org-roam-dailies? + `((define-key map (kbd "n t") 'org-roam-dailies-goto-today) + (define-key map (kbd "n y") 'org-roam-dailies-goto-yesterday) + (define-key map (kbd "n m") 'org-roam-dailies-goto-tomorrow) + (define-key map (kbd "n d") 'org-roam-dailies-goto-date) + (define-key map (kbd "n c t") 'org-roam-dailies-capture-today) + (define-key map (kbd "n c y") + 'org-roam-dailies-capture-yesterday) + (define-key map (kbd "n c m") + 'org-roam-dailies-capture-tomorrow) + (define-key map (kbd "n c d") 'org-roam-dailies-capture-date)) + '()) (define-key map (kbd "n n") 'org-roam-buffer-toggle) (define-key map (kbd "n f") 'org-roam-node-find) (define-key map (kbd "n i") 'org-roam-node-insert) @@ -4660,7 +4677,7 @@ Set roam directory, basic keybindings, reasonable defaults and adjust marginalia annotations." #:keywords '(convenience org-mode roam knowledgebase) #:elisp-packages (append - (list emacs-org-roam) + (list emacs-org-roam-package) (or (and=> (get-value 'emacs-embark config) list) '()) (or (and=> (get-value 'emacs-org-recur config) @@ -4669,7 +4686,7 @@ marginalia annotations." (feature (name f-name) - (values `((,f-name . ,emacs-org-roam) + (values `((,f-name . ,emacs-org-roam-package) (org-roam-dailies? . ,org-roam-dailies?) (org-roam-todo? . ,org-roam-todo?))) (home-services-getter get-home-services))) -- 2.41.0