mirror of
https://github.com/chrisbarrett/nursery
synced 2025-09-22 16:20:55 -05:00
Add support for SRS 'memorisation' nodes that are not evergreens
This commit is contained in:
@@ -51,6 +51,7 @@
|
|||||||
;; "C-c r r" '(org-roam-review-accept :wk "accept")
|
;; "C-c r r" '(org-roam-review-accept :wk "accept")
|
||||||
;; "C-c r f" '(org-roam-review-forgot :wk "forgot")
|
;; "C-c r f" '(org-roam-review-forgot :wk "forgot")
|
||||||
;; "C-c r u" '(org-roam-review-bury :wk "bury")
|
;; "C-c r u" '(org-roam-review-bury :wk "bury")
|
||||||
|
;; "C-c r m" '(org-roam-review-set-memorise :wk "set memorise")
|
||||||
;; "C-c r x" '(org-roam-review-set-excluded :wk "set excluded")
|
;; "C-c r x" '(org-roam-review-set-excluded :wk "set excluded")
|
||||||
;; "C-c r b" '(org-roam-review-set-budding :wk "set budding")
|
;; "C-c r b" '(org-roam-review-set-budding :wk "set budding")
|
||||||
;; "C-c r s" '(org-roam-review-set-seedling :wk "set seedling")
|
;; "C-c r s" '(org-roam-review-set-seedling :wk "set seedling")
|
||||||
@@ -207,29 +208,34 @@ QUALITY is a number 0-5 inclusive.
|
|||||||
(org-set-property "NEXT_REVIEW" next-review)
|
(org-set-property "NEXT_REVIEW" next-review)
|
||||||
next-review)))
|
next-review)))
|
||||||
|
|
||||||
(defun org-roam-review--update-node-srs-properties (maturity score)
|
(defun org-roam-review--update-node-srs-properties (score &optional maturity)
|
||||||
"Set the MATURITY and updated SCORE for a node.
|
"Set the MATURITY and updated SCORE for a node.
|
||||||
|
|
||||||
A higher score means that the node will appear less frequently."
|
A higher score means that the node will appear less frequently."
|
||||||
(cl-assert (member maturity org-roam-review-maturity-values))
|
(cl-assert (or (null maturity) (member maturity org-roam-review-maturity-values)))
|
||||||
(cl-assert (derived-mode-p 'org-mode))
|
(cl-assert (derived-mode-p 'org-mode))
|
||||||
(when (org-roam-review--daily-file-p (buffer-file-name))
|
(when (and maturity (org-roam-review--daily-file-p (buffer-file-name)))
|
||||||
(user-error "Cannot set maturity on daily file"))
|
(user-error "Cannot set maturity on daily file"))
|
||||||
(let ((id (org-entry-get (point-min) "ID")))
|
(let ((id (org-entry-get (point-min) "ID")))
|
||||||
(unless id
|
(unless id
|
||||||
(error "Not visiting an Evergreen Note--no ID property found"))
|
(error "Not visiting an org-roam node--no ID property found"))
|
||||||
(org-with-point-at (org-find-property "ID" id)
|
(org-with-point-at (org-find-property "ID" id)
|
||||||
(atomic-change-group
|
(atomic-change-group
|
||||||
(let ((next-review (org-roam-review--update-next-review score)))
|
(let ((next-review (org-roam-review--update-next-review score)))
|
||||||
(ignore-errors
|
(ignore-errors
|
||||||
(org-roam-tag-remove org-roam-review-maturity-values))
|
(org-roam-tag-remove org-roam-review-maturity-values))
|
||||||
(org-roam-tag-add (list maturity))
|
|
||||||
|
|
||||||
(org-set-property "MATURITY" maturity)
|
(when maturity
|
||||||
|
(org-roam-tag-add (list maturity))
|
||||||
|
(org-set-property "MATURITY" maturity))
|
||||||
|
|
||||||
(org-set-property "LAST_REVIEW" (org-format-time-string "[%Y-%m-%d %a]"))
|
(org-set-property "LAST_REVIEW" (org-format-time-string "[%Y-%m-%d %a]"))
|
||||||
|
|
||||||
(save-buffer)
|
(save-buffer)
|
||||||
(message "Maturity set to '%s'. Review scheduled for %s" maturity next-review))))))
|
|
||||||
|
(if maturity
|
||||||
|
(message "Maturity set to '%s'. Review scheduled for %s" maturity next-review)
|
||||||
|
(message "Review scheduled for %s" next-review)))))))
|
||||||
|
|
||||||
(defun org-roam-review-node-ignored-p (node &optional filter-plist)
|
(defun org-roam-review-node-ignored-p (node &optional filter-plist)
|
||||||
(let* ((filter-plist (or filter-plist org-tags-filter-last-value))
|
(let* ((filter-plist (or filter-plist org-tags-filter-last-value))
|
||||||
@@ -538,11 +544,13 @@ categorised by their maturity."
|
|||||||
(org-roam-review-list-due)))
|
(org-roam-review-list-due)))
|
||||||
|
|
||||||
(defun org-roam-review--maturity-header (node)
|
(defun org-roam-review--maturity-header (node)
|
||||||
(pcase (org-roam-review-node-maturity node)
|
(if (member "memo" (org-roam-node-tags node))
|
||||||
('seedling (cons "Seedling 🌱" 3))
|
(cons "Memorise 💭" 0)
|
||||||
('budding (cons "Budding 🪴" 2))
|
(pcase (org-roam-review-node-maturity node)
|
||||||
('evergreen (cons "Evergreen 🌲" 1))
|
('seedling (cons "Seedling 🌱" 3))
|
||||||
(value value)))
|
('budding (cons "Budding 🪴" 2))
|
||||||
|
('evergreen (cons "Evergreen 🌲" 1))
|
||||||
|
(value value))))
|
||||||
|
|
||||||
(defun org-roam-review-node-due-p (node)
|
(defun org-roam-review-node-due-p (node)
|
||||||
(when-let* ((next-review (org-roam-review-node-next-review node)))
|
(when-let* ((next-review (org-roam-review-node-next-review node)))
|
||||||
@@ -721,8 +729,8 @@ Return the affected sections."
|
|||||||
(org-roam-review--transform-selected-sections
|
(org-roam-review--transform-selected-sections
|
||||||
(cl-incf count)
|
(cl-incf count)
|
||||||
(let ((node (org-roam-review--visiting-node-at-point
|
(let ((node (org-roam-review--visiting-node-at-point
|
||||||
(when-let* ((maturity (org-entry-get-with-inheritance "MATURITY")))
|
(org-roam-review--update-node-srs-properties org-roam-review--maturity-score-ok
|
||||||
(org-roam-review--update-node-srs-properties maturity org-roam-review--maturity-score-ok))
|
(org-entry-get-with-inheritance "MATURITY"))
|
||||||
(let ((buf (current-buffer)))
|
(let ((buf (current-buffer)))
|
||||||
(run-hooks 'org-roam-review-node-accepted-hook)
|
(run-hooks 'org-roam-review-node-accepted-hook)
|
||||||
(run-hooks 'org-roam-review-node-processed-hook)
|
(run-hooks 'org-roam-review-node-processed-hook)
|
||||||
@@ -738,8 +746,8 @@ Return the affected sections."
|
|||||||
(org-roam-review--transform-selected-sections
|
(org-roam-review--transform-selected-sections
|
||||||
(cl-incf count)
|
(cl-incf count)
|
||||||
(let ((node (org-roam-review--visiting-node-at-point
|
(let ((node (org-roam-review--visiting-node-at-point
|
||||||
(when-let* ((maturity (org-entry-get-with-inheritance "MATURITY")))
|
(org-roam-review--update-node-srs-properties org-roam-review--maturity-score-revisit
|
||||||
(org-roam-review--update-node-srs-properties maturity org-roam-review--maturity-score-revisit))
|
(org-entry-get-with-inheritance "MATURITY"))
|
||||||
(let ((buf (current-buffer)))
|
(let ((buf (current-buffer)))
|
||||||
(run-hooks 'org-roam-review-node-forgotten-hook)
|
(run-hooks 'org-roam-review-node-forgotten-hook)
|
||||||
(run-hooks 'org-roam-review-node-processed-hook)
|
(run-hooks 'org-roam-review-node-processed-hook)
|
||||||
@@ -755,8 +763,8 @@ Return the affected sections."
|
|||||||
(org-roam-review--transform-selected-sections
|
(org-roam-review--transform-selected-sections
|
||||||
(cl-incf count)
|
(cl-incf count)
|
||||||
(let ((node (org-roam-review--visiting-node-at-point
|
(let ((node (org-roam-review--visiting-node-at-point
|
||||||
(when-let* ((maturity (org-entry-get-with-inheritance "MATURITY")))
|
(org-roam-review--update-node-srs-properties org-roam-review--maturity-score-bury
|
||||||
(org-roam-review--update-node-srs-properties maturity org-roam-review--maturity-score-bury))
|
(org-entry-get-with-inheritance "MATURITY"))
|
||||||
(let ((buf (current-buffer)))
|
(let ((buf (current-buffer)))
|
||||||
(run-hooks 'org-roam-review-node-buried-hook)
|
(run-hooks 'org-roam-review-node-buried-hook)
|
||||||
(run-hooks 'org-roam-review-node-processed-hook)
|
(run-hooks 'org-roam-review-node-processed-hook)
|
||||||
@@ -769,6 +777,20 @@ Return the affected sections."
|
|||||||
(or (org-roam-review--daily-file-p (buffer-file-name))
|
(or (org-roam-review--daily-file-p (buffer-file-name))
|
||||||
(seq-intersection org-roam-review-ignored-tags (org-roam-review--tags-at-pt)))))
|
(seq-intersection org-roam-review-ignored-tags (org-roam-review--tags-at-pt)))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun org-roam-review-set-memorise ()
|
||||||
|
"Set the current node as a 'memorise' node.
|
||||||
|
|
||||||
|
It will show up in a dedicated section of the review buffer when it's due."
|
||||||
|
(interactive)
|
||||||
|
(org-roam-review--transform-selected-sections
|
||||||
|
(let ((node (org-roam-review--visiting-node-at-point
|
||||||
|
(org-roam-tag-remove org-roam-review-maturity-values)
|
||||||
|
(org-roam-tag-add (list "memo"))
|
||||||
|
(org-delete-property "MATURITY")
|
||||||
|
(org-roam-review--update-node-srs-properties org-roam-review--maturity-score-revisit))))
|
||||||
|
(org-roam-review--update-review-buffer-entry node))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun org-roam-review-set-budding (&optional bury)
|
(defun org-roam-review-set-budding (&optional bury)
|
||||||
"Set the current node as a 'budding' node and confirm it's been reviewed.
|
"Set the current node as a 'budding' node and confirm it's been reviewed.
|
||||||
@@ -782,7 +804,7 @@ the future."
|
|||||||
org-roam-review--maturity-score-ok))
|
org-roam-review--maturity-score-ok))
|
||||||
(node (org-roam-review--visiting-node-at-point
|
(node (org-roam-review--visiting-node-at-point
|
||||||
(unless (org-roam-review--skip-node-for-maturity-assignment-p)
|
(unless (org-roam-review--skip-node-for-maturity-assignment-p)
|
||||||
(org-roam-review--update-node-srs-properties "budding" score)))))
|
(org-roam-review--update-node-srs-properties score "budding")))))
|
||||||
(org-roam-review--update-review-buffer-entry node))))
|
(org-roam-review--update-review-buffer-entry node))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
@@ -798,7 +820,7 @@ the future."
|
|||||||
org-roam-review--maturity-score-revisit))
|
org-roam-review--maturity-score-revisit))
|
||||||
(node (org-roam-review--visiting-node-at-point
|
(node (org-roam-review--visiting-node-at-point
|
||||||
(unless (org-roam-review--skip-node-for-maturity-assignment-p)
|
(unless (org-roam-review--skip-node-for-maturity-assignment-p)
|
||||||
(org-roam-review--update-node-srs-properties "seedling" score)))))
|
(org-roam-review--update-node-srs-properties score "seedling")))))
|
||||||
(org-roam-review--update-review-buffer-entry node))))
|
(org-roam-review--update-review-buffer-entry node))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
@@ -814,7 +836,7 @@ the future."
|
|||||||
org-roam-review--maturity-score-ok))
|
org-roam-review--maturity-score-ok))
|
||||||
(node (org-roam-review--visiting-node-at-point
|
(node (org-roam-review--visiting-node-at-point
|
||||||
(unless (org-roam-review--skip-node-for-maturity-assignment-p)
|
(unless (org-roam-review--skip-node-for-maturity-assignment-p)
|
||||||
(org-roam-review--update-node-srs-properties "evergreen" score)))))
|
(org-roam-review--update-node-srs-properties score "evergreen")))))
|
||||||
(org-roam-review--update-review-buffer-entry node))))
|
(org-roam-review--update-review-buffer-entry node))))
|
||||||
|
|
||||||
(defun org-roam-review--delete-tags-and-properties (node-id)
|
(defun org-roam-review--delete-tags-and-properties (node-id)
|
||||||
|
Reference in New Issue
Block a user