Fix attempt to operate on possibly non-existent review buffer

This commit is contained in:
Chris Barrett
2023-03-19 12:02:43 +13:00
parent f7bbd4dee5
commit 84ea667031

View File

@@ -653,26 +653,28 @@ them as reviewed with `org-roam-review-accept',
found))) found)))
(defun org-roam-review--update-review-buffer-entry (node) (defun org-roam-review--update-review-buffer-entry (node)
(org-roam-review--with-current-review-buffer ;; Nothing to do if there are no review buffers.
(let ((continue t) (when (org-roam-review-buffers)
(found-pos nil) (org-roam-review--with-current-review-buffer
(id (org-roam-node-id node))) (let ((continue t)
(save-excursion (found-pos nil)
(goto-char (point-min)) (id (org-roam-node-id node)))
(while (and (not found-pos) continue) (save-excursion
(if (equal id (ignore-errors (org-roam-node-id (org-roam-node-at-point)))) (goto-char (point-min))
(setq continue nil (while (and (not found-pos) continue)
found-pos (point)) (if (equal id (ignore-errors (org-roam-node-id (org-roam-node-at-point))))
(or (ignore-errors (magit-section-forward) t) (setq continue nil
(setq continue nil))))) found-pos (point))
(or (ignore-errors (magit-section-forward) t)
(setq continue nil)))))
(when found-pos (when found-pos
(goto-char found-pos) (goto-char found-pos)
(when-let* ((section (magit-current-section))) (when-let* ((section (magit-current-section)))
(when (oref section node) (when (oref section node)
(let ((inhibit-read-only t)) (let ((inhibit-read-only t))
(put-text-property (line-beginning-position) (line-end-position) 'face 'font-lock-comment-face)) (put-text-property (line-beginning-position) (line-end-position) 'face 'font-lock-comment-face))
(magit-section-hide section))))))) (magit-section-hide section))))))))
(defmacro org-roam-review--transform-selected-sections (&rest body) (defmacro org-roam-review--transform-selected-sections (&rest body)
"Execute BODY, possibly over multiple sections. "Execute BODY, possibly over multiple sections.
@@ -692,9 +694,11 @@ Return the affected sections."
(magit-section-update-highlight))) (magit-section-update-highlight)))
result)) result))
,@body) ,@body)
(org-roam-review--with-current-review-buffer
(when (org-roam-review--forward-to-uncommented-sibling) (when (org-roam-review-buffers)
(run-hooks 'org-roam-review-next-node-selected-hook))))) (org-roam-review--with-current-review-buffer
(when (org-roam-review--forward-to-uncommented-sibling)
(run-hooks 'org-roam-review-next-node-selected-hook))))))
(defun org-roam-review--maybe-kill-reviewed-buffer (buf) (defun org-roam-review--maybe-kill-reviewed-buffer (buf)
(when (and org-roam-review-kill-reviewed-buffers-p (buffer-live-p buf)) (when (and org-roam-review-kill-reviewed-buffers-p (buffer-live-p buf))
@@ -709,14 +713,14 @@ Return the affected sections."
(let ((count 0)) (let ((count 0))
(org-roam-review--transform-selected-sections (org-roam-review--transform-selected-sections
(cl-incf count) (cl-incf count)
(org-roam-review--update-review-buffer-entry (let ((node (org-roam-review--visiting-node-at-point
(org-roam-review--visiting-node-at-point (when-let* ((maturity (org-entry-get-with-inheritance "MATURITY")))
(when-let* ((maturity (org-entry-get-with-inheritance "MATURITY"))) (org-roam-review--update-node-srs-properties maturity org-roam-review--maturity-score-ok))
(org-roam-review--update-node-srs-properties maturity org-roam-review--maturity-score-ok)) (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) (org-roam-review--maybe-kill-reviewed-buffer buf)))))
(org-roam-review--maybe-kill-reviewed-buffer buf))))) (org-roam-review--update-review-buffer-entry node)))
(message "Node%s scheduled for future review" (if (= 1 count) "" "s")))) (message "Node%s scheduled for future review" (if (= 1 count) "" "s"))))
;;;###autoload ;;;###autoload
@@ -726,14 +730,14 @@ Return the affected sections."
(let ((count 0)) (let ((count 0))
(org-roam-review--transform-selected-sections (org-roam-review--transform-selected-sections
(cl-incf count) (cl-incf count)
(org-roam-review--update-review-buffer-entry (let ((node (org-roam-review--visiting-node-at-point
(org-roam-review--visiting-node-at-point (when-let* ((maturity (org-entry-get-with-inheritance "MATURITY")))
(when-let* ((maturity (org-entry-get-with-inheritance "MATURITY"))) (org-roam-review--update-node-srs-properties maturity org-roam-review--maturity-score-bury))
(org-roam-review--update-node-srs-properties maturity org-roam-review--maturity-score-bury)) (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) (org-roam-review--maybe-kill-reviewed-buffer buf)))))
(org-roam-review--maybe-kill-reviewed-buffer buf))))) (org-roam-review--update-review-buffer-entry node)))
(message "Node%s buried" (if (= 1 count) "" "s")))) (message "Node%s buried" (if (= 1 count) "" "s"))))
(defun org-roam-review--skip-node-for-maturity-assignment-p () (defun org-roam-review--skip-node-for-maturity-assignment-p ()
@@ -749,13 +753,13 @@ With prefix arg BURY, the node is less likely to be surfaced in
the future." the future."
(interactive "P") (interactive "P")
(org-roam-review--transform-selected-sections (org-roam-review--transform-selected-sections
(let ((score (if bury (let* ((score (if bury
org-roam-review--maturity-score-bury org-roam-review--maturity-score-bury
org-roam-review--maturity-score-ok))) org-roam-review--maturity-score-ok))
(org-roam-review--update-review-buffer-entry (node (org-roam-review--visiting-node-at-point
(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 "budding" score))))))) (org-roam-review--update-review-buffer-entry node))))
;;;###autoload ;;;###autoload
(defun org-roam-review-set-seedling (&optional bury) (defun org-roam-review-set-seedling (&optional bury)
@@ -765,13 +769,13 @@ With prefix arg BURY, the node is less likely to be surfaced in
the future." the future."
(interactive "P") (interactive "P")
(org-roam-review--transform-selected-sections (org-roam-review--transform-selected-sections
(let ((score (if bury (let* ((score (if bury
org-roam-review--maturity-score-bury org-roam-review--maturity-score-bury
org-roam-review--maturity-score-revisit))) org-roam-review--maturity-score-revisit))
(org-roam-review--update-review-buffer-entry (node (org-roam-review--visiting-node-at-point
(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 "seedling" score))))))) (org-roam-review--update-review-buffer-entry node))))
;;;###autoload ;;;###autoload
(defun org-roam-review-set-evergreen (&optional bury) (defun org-roam-review-set-evergreen (&optional bury)
@@ -781,13 +785,13 @@ With prefix arg BURY, the node is less likely to be surfaced in
the future." the future."
(interactive "P") (interactive "P")
(org-roam-review--transform-selected-sections (org-roam-review--transform-selected-sections
(let ((score (if bury (let* ((score (if bury
org-roam-review--maturity-score-bury org-roam-review--maturity-score-bury
org-roam-review--maturity-score-ok))) org-roam-review--maturity-score-ok))
(org-roam-review--update-review-buffer-entry (node (org-roam-review--visiting-node-at-point
(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 "evergreen" score))))))) (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)
(let ((message-log-max)) (let ((message-log-max))
@@ -807,16 +811,17 @@ package."
(interactive) (interactive)
(let ((titles)) (let ((titles))
(org-roam-review--transform-selected-sections (org-roam-review--transform-selected-sections
(org-roam-review--update-review-buffer-entry (let ((node (org-roam-review--visiting-node-at-point
(org-roam-review--visiting-node-at-point (let ((id (org-entry-get (point-min) "ID")))
(let ((id (org-entry-get (point-min) "ID"))) (unless id
(unless id (error "No ID in buffer"))
(error "No ID in buffer")) (org-with-point-at (org-find-property "ID" id)
(org-with-point-at (org-find-property "ID" id) (org-roam-review--delete-tags-and-properties id)
(org-roam-review--delete-tags-and-properties id) (save-buffer))
(save-buffer)) (let ((title (org-roam-node-title (org-roam-node-from-id id))))
(let ((title (org-roam-node-title (org-roam-node-from-id id)))) (push title titles))))))
(push title titles))))))
(org-roam-review--update-review-buffer-entry node)))
(if (equal 1 (length titles)) (if (equal 1 (length titles))
(message "Excluded node `%s' from reviews" (car titles)) (message "Excluded node `%s' from reviews" (car titles))