mirror of
https://github.com/org-roam/org-roam
synced 2025-09-02 14:53:31 -05:00
Only enable post-command-hook on org-roam files
This commit is contained in:
19
org-roam.el
19
org-roam.el
@@ -8,6 +8,7 @@
|
|||||||
(require 'async)
|
(require 'async)
|
||||||
(require 'subr-x)
|
(require 'subr-x)
|
||||||
(require 's)
|
(require 's)
|
||||||
|
(require 'f)
|
||||||
|
|
||||||
;;; Customizations
|
;;; Customizations
|
||||||
(defgroup org-roam nil
|
(defgroup org-roam nil
|
||||||
@@ -91,6 +92,12 @@ If called interactively, then PARENTS is non-nil."
|
|||||||
"Currently displayed file in `org-roam' buffer.")
|
"Currently displayed file in `org-roam' buffer.")
|
||||||
|
|
||||||
;;; Utilities
|
;;; Utilities
|
||||||
|
(defun org-roam--org-roam-file-p ()
|
||||||
|
"Predicate that returns true if file is part of org-roam system."
|
||||||
|
(and (buffer-file-name (current-buffer))
|
||||||
|
(f-child-of-p (file-truename (buffer-file-name (current-buffer)))
|
||||||
|
org-roam-directory)))
|
||||||
|
|
||||||
(defun org-roam--find-files (dir)
|
(defun org-roam--find-files (dir)
|
||||||
(if (file-exists-p dir)
|
(if (file-exists-p dir)
|
||||||
(let ((files (directory-files dir t "." t))
|
(let ((files (directory-files dir t "." t))
|
||||||
@@ -301,6 +308,10 @@ Valid states are 'visible, 'exists and 'none."
|
|||||||
('none (org-roam--setup-buffer))))
|
('none (org-roam--setup-buffer))))
|
||||||
|
|
||||||
;;; The minor mode definition that updates the buffer
|
;;; The minor mode definition that updates the buffer
|
||||||
|
(defun org-roam--maybe-enable ()
|
||||||
|
(when (org-roam--org-roam-file-p)
|
||||||
|
(org-roam--enable)))
|
||||||
|
|
||||||
(defun org-roam--enable ()
|
(defun org-roam--enable ()
|
||||||
(add-hook 'post-command-hook #'org-roam--maybe-update-buffer -100 t)
|
(add-hook 'post-command-hook #'org-roam--maybe-update-buffer -100 t)
|
||||||
(unless org-roam-update-timer
|
(unless org-roam-update-timer
|
||||||
@@ -320,16 +331,16 @@ This needs to be quick/infrequent, because this is run at
|
|||||||
`post-command-hook'."
|
`post-command-hook'."
|
||||||
(with-current-buffer (window-buffer)
|
(with-current-buffer (window-buffer)
|
||||||
(when (and (get-buffer org-roam-buffer)
|
(when (and (get-buffer org-roam-buffer)
|
||||||
(buffer-file-name (window-buffer))
|
(buffer-file-name (current-buffer))
|
||||||
(not (string= org-roam-current-file-id (org-roam--get-id (file-truename (buffer-file-name (window-buffer))))))
|
(not (string= org-roam-current-file-id
|
||||||
(member (file-truename (buffer-file-name (window-buffer))) (org-roam--find-all-files)))
|
(org-roam--get-id (file-truename (buffer-file-name (current-buffer)))))))
|
||||||
(org-roam-update (org-roam--get-id (buffer-file-name (window-buffer)))))))
|
(org-roam-update (org-roam--get-id (buffer-file-name (window-buffer)))))))
|
||||||
|
|
||||||
(define-minor-mode org-roam-mode
|
(define-minor-mode org-roam-mode
|
||||||
"Global minor mode to automatically update the org-roam buffer."
|
"Global minor mode to automatically update the org-roam buffer."
|
||||||
:require 'org-roam
|
:require 'org-roam
|
||||||
(if org-roam-mode
|
(if org-roam-mode
|
||||||
(org-roam--enable)
|
(org-roam--maybe-enable)
|
||||||
(org-roam--disable)))
|
(org-roam--disable)))
|
||||||
|
|
||||||
;;; Building the Graphviz graph
|
;;; Building the Graphviz graph
|
||||||
|
Reference in New Issue
Block a user