(fix): prevent link-extraction from keeping buffers open (#1131)

Fixes #1129 .

Co-authored-by: Jethro Kuan <jethrokuan95@gmail.com>
master
Natnael Kahssay 6 years ago committed by GitHub
parent 346bbf50a1
commit c05368a16b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      org-roam-macs.el
  2. 15
      org-roam.el

@ -63,6 +63,19 @@ If FILE, set `org-roam-temp-file-name' to file and insert its contents."
(setq-local org-roam-file-name ,file))
,@body)))))
(defmacro org-roam--with-file (file &rest body)
"Execute BODY within a FILE.
Closes the file if the file is not yet visited."
(declare (indent 1) (debug t))
`(let* ((existing-buf (find-buffer-visiting ,file))
(buf (or existing-buf
(find-file-noselect file)))
res)
(with-current-buffer buf
(setq res ,@body))
(when existing-buf (kill-buffer existing-buf))
res))
(defun org-roam-message (format-string &rest args)
"Pass FORMAT-STRING and ARGS to `message' when `org-roam-verbose' is t."
(when org-roam-verbose

@ -1102,16 +1102,19 @@ Return nil otherwise."
:limit 1]
id)))
(defun org-roam-id-find (id &optional markerp strict)
(defun org-roam-id-find (id &optional markerp strict keep-buffer-p)
"Return the location of the entry with the id ID.
When MARKERP is non-nil, return a marker pointing to theheadline.
Otherwise, return a cons formatted as \(file . pos).
When STRICT is non-nil, only consider Org-roams database."
When STRICT is non-nil, only consider Org-roams database.
When KEEP-BUFFER-P is non-nil, keep the buffers navigated by Org-roam open."
(let ((file (or (org-roam-id-get-file id)
(unless strict
(org-id-find-id-file id)))))
(unless strict (org-id-find-id-file id)))))
(when file
(org-id-find-id-in-file id file markerp))))
(if keep-buffer-p
(org-id-find-id-in-file id file markerp)
(org-roam--with-file file
(org-id-find-id-in-file id file markerp))))))
(defun org-roam-id-open (id-or-marker &optional strict)
"Go to the entry with ID-OR-MARKER.
@ -1124,7 +1127,7 @@ to the default behaviour of `org-id-open'.
When STRICT is non-nil, only consider Org-roams database."
(when-let ((marker (if (markerp id-or-marker)
id-or-marker
(org-roam-id-find id-or-marker t strict))))
(org-roam-id-find id-or-marker t strict t))))
(org-goto-marker-or-bmk marker)
(set-marker marker nil)))

Loading…
Cancel
Save