Added shortcuts for org-roam dailies and better dynamic habits

This commit is contained in:
Random936 2024-01-11 21:22:04 -08:00
parent 818f1395e3
commit 19be781b8b
2 changed files with 41 additions and 15 deletions

View File

@ -2,9 +2,30 @@
As of now, I haven't added anything here, though I do expect to start adding some custom functions as I learn more about Elisp.
* Org Roam Shortcuts
Shortcut to goto todays org-roam dailies document.
#+begin_src emacs-lisp
(defun jm/org-roam-goto-day (days)
(let* ((rel-time (+ (time-convert (current-time) 'integer) (* days 86400)))
(path (format-time-string "%Y-%m-%d.org" rel-time))
(full-path (file-name-concat org-roam-directory "daily" path)))
(if (file-exists-p full-path)
(find-file full-path)
(org-roam-dailies--capture rel-time))))
(jm/leader-keys
"op" '((lambda () (interactive) (jm/org-roam-goto-day -1)) :which-key "Open/create yesterday's daily notes file")
"ot" '((lambda () (interactive) (jm/org-roam-goto-day 0)) :which-key "Open/create today's daily notes file")
"on" '((lambda () (interactive) (jm/org-roam-goto-day 1)) :which-key "Open/create tomorrow's daily notes file"))
#+end_src
* Capture Template Functions
These functions are for my org roam daily capture template.
These functions are for my org roam daily capture template.
** Helper Functions
#+begin_src emacs-lisp
(defun jm/dt-filter-tasks (helper query)
@ -17,7 +38,11 @@ These functions are for my org roam daily capture template.
(car (org-property-values "ID")))))
(when (stringp item-id)
(format "%s [[id:%s][%s]]" prefix item-id item-name))))
#+end_src
** Queries
#+begin_src emacs-lisp
(defun jm/dt-get-priority (priority &optional prompt)
(jm/dt-filter-tasks
(lambda () (when (equal priority (org-entry-get nil "PRIORITY"))
@ -35,9 +60,21 @@ These functions are for my org roam daily capture template.
(defun jm/dt-get-status (status &optional prompt)
(jm/dt-filter-tasks (lambda () (jm/dt-format-link (or prompt "- [ ]")))
(concat "TODO=\"" status "\"")))
#+end_src
(defun jm/dt-dynamic-habits (habit week-days)
** Dynamic Habits
#+begin_src emacs-lisp
(defun jm/dt-habit (habit)
(let* ((org-date (or (org-capture-get :default-time) (current-time)))
(today (downcase (format-time-string "%a" org-date))))
(when (seq-contains-p week-days today) habit)))
(when (seq-contains-p (cdr habit) today)
(car habit))))
(defun jm/dt-habits (habits)
(let ((out-list '()))
(dolist (habit habits out-list)
(when-let (out (jm/dt-habit habit))
(push out out-list)))
(mapconcat #'identity out-list "\n")))
#+end_src

View File

@ -13,16 +13,6 @@ This installs the org package and creates a setup function to enable/disable cer
(visual-line-mode 1)
(add-to-list 'org-link-frame-setup '(file . find-file))) ; Open link in current window not other window.
;; Shortcut to goto todays org-roam dailies document.
(defun jm/org-roam-goto-today ()
(interactive)
(let* ((path (format-time-string "%Y-%m-%d.org" ))
(full-path (file-name-concat org-roam-directory "daily" path)))
(if (file-exists-p full-path)
(find-file full-path)
(org-roam-dailies-capture-today))))
(use-package org
:hook (org-mode . jm/org-mode-setup)
:config
@ -40,8 +30,7 @@ This installs the org package and creates a setup function to enable/disable cer
org-time-stamp-custom-formats '("%m-%d-%y %a" . "%m-%d-%y %a %I:%M %p"))
(jm/leader-keys
"oa" '(org-agenda :which-key "Org agenda")
"ot" '(jm/org-roam-goto-today :which-key "Open/create daily notes file")))
"oa" '(org-agenda :which-key "Org agenda")))
#+end_src
* Evil Org