diff --git a/org-roam.el b/org-roam.el index b4f0685..b492d2b 100644 --- a/org-roam.el +++ b/org-roam.el @@ -149,7 +149,7 @@ If called interactively, then PARENTS is non-nil." (defvar org-roam-titles-cache (make-hash-table :test #'equal) "Cache containing titles for org-roam files.") -(defvar org-roam-current-file nil +(defvar org-roam--current-buffer nil "Currently displayed file in `org-roam' buffer.") (defvar org-roam-last-window nil @@ -463,8 +463,7 @@ Bindings: (insert (format "%s \n\n" content))))) backlinks)) (insert "\n\n* No backlinks!"))) - (read-only-mode 1))) - (setq org-roam-current-file file-path)) + (read-only-mode 1)))) ;;; Show/hide the org-roam buffer (define-inline org-roam--current-visibility () @@ -529,21 +528,20 @@ Valid states are 'visible, 'exists and 'none." "Disable org-roam updating for file. 1. Remove hooks for updating the cache, and the org-roam buffer." - (remove-hook 'post-command-hook #'org-roam--maybe-update-buffer) - (remove-hook 'after-save-hook #'org-roam--update-cache)) + (remove-hook 'post-command-hook #'org-roam--maybe-update-buffer t) + (remove-hook 'after-save-hook #'org-roam--update-cache t)) (cl-defun org-roam--maybe-update-buffer (&key redisplay) "Update `org-roam-buffer' with the necessary information. This needs to be quick/infrequent, because this is run at `post-command-hook'." - (with-current-buffer (window-buffer) - (when (and (get-buffer org-roam-buffer) - (buffer-file-name (current-buffer)) - (file-exists-p (file-truename (buffer-file-name (current-buffer)))) - (or redisplay - (not (string= org-roam-current-file - (file-truename (buffer-file-name (current-buffer))))))) - (org-roam-update (file-truename (buffer-file-name (window-buffer))))))) + (let ((buffer (window-buffer))) + (when (and (or redisplay + (not (eq org-roam--current-buffer buffer))) + (eq 'visible (org-roam--current-visibility))) + (setq org-roam--current-buffer buffer) + (org-roam-update (expand-file-name + (buffer-local-value 'buffer-file-truename buffer)))))) (define-minor-mode org-roam-mode "Global minor mode to automatically update the org-roam buffer."