(fix): relative links should work from org-roam-buffer with multidir (#228)

This commit is contained in:
Jethro Kuan
2020-03-05 13:53:53 +08:00
committed by GitHub
parent c77c1b7316
commit 7d1dd831db

View File

@@ -927,44 +927,47 @@ If item at point is not org-roam specific, default to Org behaviour."
(let ((buffer-title (org-roam--get-title-or-slug file-path))) (let ((buffer-title (org-roam--get-title-or-slug file-path)))
(with-current-buffer org-roam-buffer (with-current-buffer org-roam-buffer
;; When dir-locals.el is used to override org-roam-directory, ;; When dir-locals.el is used to override org-roam-directory,
;; org-roam-buffer may have a different local org-roam-directory. ;; org-roam-buffer should have a different local org-roam-directory and
(let ((org-roam-directory source-org-roam-directory)) ;; default-directory, as relative links are relative from the overridden
;; Locally overwrite the file opening function to re-use the ;; org-roam-directory.
;; last window org-roam was called from (setq-local org-roam-directory source-org-roam-directory)
(setq-local (setq-local default-directory source-org-roam-directory)
org-link-frame-setup ;; Locally overwrite the file opening function to re-use the
(cons '(file . org-roam--find-file) org-link-frame-setup)) ;; last window org-roam was called from
(let ((inhibit-read-only t)) (setq-local
(erase-buffer) org-link-frame-setup
(when (not (eq major-mode 'org-roam-backlinks-mode)) (cons '(file . org-roam--find-file) org-link-frame-setup))
(org-roam-backlinks-mode)) (let ((inhibit-read-only t))
(make-local-variable 'org-return-follows-link) (erase-buffer)
(setq org-return-follows-link t) (when (not (eq major-mode 'org-roam-backlinks-mode))
(insert (org-roam-backlinks-mode))
(propertize buffer-title 'font-lock-face 'org-document-title)) (make-local-variable 'org-return-follows-link)
(if-let* ((backlinks (org-roam--get-backlinks file-path)) (setq org-return-follows-link t)
(grouped-backlinks (--group-by (nth 0 it) backlinks))) (insert
(progn (propertize buffer-title 'font-lock-face 'org-document-title))
(insert (format "\n\n* %d Backlinks\n" (if-let* ((backlinks (org-roam--get-backlinks file-path))
(length backlinks))) (grouped-backlinks (--group-by (nth 0 it) backlinks)))
(dolist (group grouped-backlinks) (progn
(let ((file-from (car group)) (insert (format "\n\n* %d Backlinks\n"
(bls (cdr group))) (length backlinks)))
(insert (format "** [[file:%s][%s]]\n" (dolist (group grouped-backlinks)
file-from (let ((file-from (car group))
(org-roam--get-title-or-slug file-from))) (bls (cdr group)))
(dolist (backlink bls) (insert (format "** [[file:%s][%s]]\n"
(pcase-let ((`(,file-from ,file-to ,props) backlink)) file-from
(insert (propertize (org-roam--get-title-or-slug file-from)))
(s-trim (s-replace "\n" " " (dolist (backlink bls)
(plist-get props :content))) (pcase-let ((`(,file-from ,file-to ,props) backlink))
'font-lock-face 'org-block (insert (propertize
'help-echo "mouse-1: visit backlinked note" (s-trim (s-replace "\n" " "
'file-from file-from (plist-get props :content)))
'file-from-point (plist-get props :point))) 'font-lock-face 'org-block
(insert "\n\n")))))) 'help-echo "mouse-1: visit backlinked note"
(insert "\n\n* No backlinks!"))) 'file-from file-from
(read-only-mode 1)))))) 'file-from-point (plist-get props :point)))
(insert "\n\n"))))))
(insert "\n\n* No backlinks!")))
(read-only-mode 1)))))
(cl-defun org-roam--maybe-update-buffer (&key redisplay) (cl-defun org-roam--maybe-update-buffer (&key redisplay)
"Reconstructs `org-roam-buffer'. "Reconstructs `org-roam-buffer'.