Flipping through nodes like in a kraften(box)

in the UI when you double click on a node title, the node contents come up on the right pane.

is there any function within emacs org-roam (not in the ui) that shows the contents of a node automatically as your point moves over a node title ?

I am thinking a master list of all your node titles, that you can move the point over and automatically see the contents in another pane without going to that pane.

@AJZ

I don’t think Org-roam has a command like what you are looking for.

I have put together my own custom command like this below.
As you move the cursor along the list of nodes in the top part, the preview at the bottom changes.

This requires embark and consult packages.
(edit: you might not need consult as I put my own functions instead)

  1. org-roam-node-find to list nodes in minibuffer
  2. Call embark-collect-snapshot to create the list at the top part (I have a keybinding for the minibuffer)
  3. Enable my/consult-preview-at-point-mode in the Embark Collection buffer (automatic via hook)

For what it’s worth, here is my code:


;;;; My embark / consult-preview-at-point-mode
;; It is meant to be used for the *Embark Collect* buffer from the list of
;; Org-roam nodes candidate It provides preview of the note at point as you move
;; throught the candidate list in *Embark Collect* buffer.
(with-eval-after-load 'embark
  (add-hook 'embark-collect-mode-hook  #'my/consult-preview-at-point-mode))

;;;###autoload
(define-minor-mode my/consult-preview-at-point-mode
  "Preview minor mode for an *Embark Collect* buffer.
When moving around in the *Embark Collect* buffer, the candidate at point is
automatically previewed."
  :init-value nil :group 'consult
  (if my/consult-preview-at-point-mode
      (add-hook 'post-command-hook #'my/consult-preview-at-point nil 'local)
    (remove-hook 'post-command-hook #'my/consult-preview-at-point 'local)))

;;;###autoload
(defun my/consult-preview-at-point ()
  "Preview candidate at point in an *Embark Collect* buffer."
  (interactive)
  (let ((display-buffer-base-action '(display-buffer-pop-up-window))
        (cbuf (current-buffer))
        (node))
    ;; Avoid pushing the button created by Embark.  For some reason, some
    ;; candidates lead to a org-roam-node-find prompt and create a new frame.
    (if (setq node (get-text-property (point) 'node))
        ;; `org-roam-node-visit' does not return the buffer visited
        (progn
          (unless (featurep 'org-roam)(require 'org-roam))
          (org-roam-node-visit node :other-window)
          (switch-to-buffer-other-window cbuf))
      (push-button))))
2 Likes

Awsome, Thanks I will give it a try!

I do this in a very hack-y way by using custom org-agenda blocks and follow mode – but it does require your roam files having a todo status which is a pain

The above solution looks great, I’ll give it a try as well I think, thanks!