Remove reliance on the current buffer when opening the *org-roam* window (#731)

If the `org-roam-buffer--get-create' function is called from a hook
then `get-buffer-window' will return `nil' since the current buffer
may not have been placed in a window yet.  This eventually leads to an
error.

This change moves some code around so that we can use
`save-selected-window' to allow temporary focu
s on the org-roam
side window so the resizing functions can work.
Co-authored-by: Jethro Kuan <jethrokuan95@gmail.com>
This commit is contained in:
Peter J. Jones 2020-06-03 06:11:46 -07:00 committed by GitHub
parent 3ad43b0823
commit d36d3185ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -244,26 +244,32 @@ Valid states are 'visible, 'exists and 'none."
(defun org-roam-buffer--get-create ()
"Set up the `org-roam' buffer at `org-roam-buffer-position'."
(let ((window (get-buffer-window))
(position
(let ((position
(if (member org-roam-buffer-position '(right left top bottom))
org-roam-buffer-position
(let ((text-quoting-style 'grave))
(lwarn '(org-roam) :error
"Invalid org-roam-buffer-position: %s. Defaulting to \\='right"
org-roam-buffer-position))
'right)))
(-> (get-buffer-create org-roam-buffer)
(display-buffer-in-side-window
`((side . ,position)
(window-parameters . ((no-delete-other-windows . ,org-roam-buffer-no-delete-other-windows)))))
(select-window))
(pcase position
((or 'right 'left)
(org-roam-buffer--set-width (round (* (frame-width) org-roam-buffer-width))))
((or 'top 'bottom)
(org-roam-buffer--set-height (round (* (frame-height) org-roam-buffer-height)))))
(select-window window)))
'right))
(params
(list
(cons 'no-other-window org-roam-buffer-no-delete-other-windows)
(cons 'no-delete-other-windows org-roam-buffer-no-delete-other-windows))))
(save-selected-window
(-> (get-buffer-create org-roam-buffer)
(display-buffer-in-side-window
(list
(cons 'side position)
(cons 'window-parameters params)))
(select-window))
(pcase position
((or 'right 'left)
(org-roam-buffer--set-width
(round (* (frame-width) org-roam-buffer-width))))
((or 'top 'bottom)
(org-roam-buffer--set-height
(round (* (frame-height) org-roam-buffer-height))))))))
(defun org-roam-buffer-toggle-display ()
"Toggle display of the `org-roam-buffer'."