diff --git a/config-org.org b/config-org.org index b5d5ffa..02336ac 100644 --- a/config-org.org +++ b/config-org.org @@ -655,7 +655,7 @@ :custom (org-roam-directory (expand-file-name "org-roam" my/org-folder)) (org-roam-use-completion-everywhere t) - :bind (("C-c n l" . org-roam-buffer-toggle) + :bind (("C-c n h" . org-roam-buffer-toggle) ("C-c n f" . org-roam-node-find) ("C-c n T" . org-roam-dailies-goto-today) ("C-c n t" . org-roam-dailies-capture-today) @@ -684,7 +684,9 @@ ;; :target (file+head+olp "%<%Y-%m-%d>.org" ;; "#+title: %<%Y-%m-%d>\n#+filetags: %<:%Y:%B:>\n" ;; ("Most Important Thing(s)"))) - ))) + )) + (require 'my-org-roam-logger) + (global-set-key (kbd "C-c n l") #'my/org-roam-logger-capture-current)) ;; (require 'org-roam-protocol) #+end_src diff --git a/lisp/org-config/my-org-roam-logger.el b/lisp/org-config/my-org-roam-logger.el new file mode 100644 index 0000000..694ba5a --- /dev/null +++ b/lisp/org-config/my-org-roam-logger.el @@ -0,0 +1,48 @@ +;;; my-org-roam-journal.el --- -*- lexical-binding: t -*- + +;; Copyright (C) 2022 Benson Chu + +;; Author: Benson Chu +;; Created: [2022-01-19 22:02] + +;; This file is not part of GNU Emacs + +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;;; Code: +(require 'org-roam) +(require 'org-roam-util) + +(defvar my/current-logger-cache nil) +(defvar my/org-roam-logger-filter-fun nil) + +(defun my/org-roam-logger-capture-current (arg) + (interactive "P") + (when (or (null my/current-logger-cache) arg) + (setq my/current-logger-cache + (org-roam-node-read nil my/org-roam-logger-filter-fun))) + (org-roam-capture- + :node my/current-logger-cache + :templates '(("d" "default" entry "* %<%H:%M> %?" + :unnarrowed t + :target + (file+head+olp "%<%Y%m%d%H%M%S>-${slug}.org" + "#+title: ${title}\n" + ("Journal" "%<%b %d, %Y>")))) + :props '(:finalize find-file))) + +(provide 'my-org-roam-logger) +;;; my-org-roam-logger.el ends here diff --git a/lisp/org-config/org-roam-util.el b/lisp/org-config/org-roam-util.el new file mode 100644 index 0000000..e8ccde8 --- /dev/null +++ b/lisp/org-config/org-roam-util.el @@ -0,0 +1,39 @@ +;;; org-roam-util.el --- -*- lexical-binding: t -*- + +;; Copyright (C) 2022 Benson Chu + +;; Author: Benson Chu +;; Created: [2022-01-19 22:02] + +;; This file is not part of GNU Emacs + +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;;; Code: +(require 'org-roam) + +(defun my/org-roam-filter-by-tag (tag-name) + (lambda (node) + (member tag-name (org-roam-node-tags node)))) + +(defun my/org-roam-list-notes-by-tag (tag-name) + (mapcar #'org-roam-node-file + (seq-filter + (my/org-roam-filter-by-tag tag-name) + (org-roam-node-list)))) + +(provide 'org-roam-util) +;;; org-roam-util.el ends here diff --git a/lisp/work-config/work-org-stuff.el b/lisp/work-config/work-org-stuff.el index da51023..a92023a 100644 --- a/lisp/work-config/work-org-stuff.el +++ b/lisp/work-config/work-org-stuff.el @@ -392,15 +392,18 @@ "#+title: %<%Y-%m-%d>\n#+filetags: %<:%Y:%B:>\n" ("Standup Notes for %u"))))) - (defun my/org-roam-filter-by-tag (tag-name) - (lambda (node) - (member tag-name (org-roam-node-tags node)))) + (setq org-roam-capture-templates + '(("d" "default" plain "%?" :target + (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") + :unnarrowed t) + ("j" "Journal" entry "* %<%H:%M> %?" + :unnarrowed t + :target + (file+head+olp "%<%Y%m%d%H%M%S>-${slug}.org" + "#+title: ${title}\n" + ("Journal" "%<%b %d, %Y>"))))) - (defun my/org-roam-list-notes-by-tag (tag-name) - (mapcar #'org-roam-node-file - (seq-filter - (my/org-roam-filter-by-tag tag-name) - (org-roam-node-list)))) + (require 'org-roam-util) (defun my/org-roam-find-project () (interactive) @@ -416,35 +419,10 @@ (global-set-key (kbd "C-c n p") #'my/org-roam-find-project) - (setq org-roam-capture-templates - '(("d" "default" plain "%?" :target - (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") - :unnarrowed t) - ("j" "Journal" entry "* %<%H:%M> %?" - :unnarrowed t - :target - (file+head+olp "%<%Y%m%d%H%M%S>-${slug}.org" - "#+title: ${title}\n" - ("Journal" "%<%b %d, %Y>"))))) + (require 'my-org-roam-logger) - (defvar my/current-journal-cache nil) - - (defun my/org-roam-journal-capture-current (arg) - (interactive "P") - (when (or (null my/current-journal-cache) arg) - (setq my/current-journal-cache - (org-roam-node-read nil (my/org-roam-filter-by-tag "Project")))) - (org-roam-capture- - :node my/current-journal-cache - :templates '(("d" "default" entry "* %<%H:%M> %?" - :unnarrowed t - :target - (file+head+olp "%<%Y%m%d%H%M%S>-${slug}.org" - "#+title: ${title}\n" - ("Journal" "%<%b %d, %Y>")))) - :props '(:finalize find-file))) - - (global-set-key (kbd "C-c n j") #'my/org-roam-journal-capture-current)) + (setq my/org-roam-logger-filter-fun (my/org-roam-filter-by-tag "Project")) + (global-set-key (kbd "C-c n j") #'my/org-roam-logger-capture-current)) (provide 'work-org-stuff) ;;; work-org-stuff.el ends here