summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorGravatar Tom Willemse2024-05-27 15:51:23 -0700
committerGravatar Tom Willemse2024-05-27 15:51:23 -0700
commit082d44bd397807492c7f0ebf65a0ccf6b12baba8 (patch)
tree61367abfe7385576dd9e8c0ec33b002b87d5b12a
parent9a76f16d3fdd49a1733e5f2777036f1f83068a40 (diff)
downloadnroam-082d44bd397807492c7f0ebf65a0ccf6b12baba8.tar.gz
nroam-082d44bd397807492c7f0ebf65a0ccf6b12baba8.zip
Update showing backlinks to work for Org Roam v2
This doesn't include backlinks from nodes within the same file. I've intentionally excluded these since they should be visible within the same file anyway. This is only for file nodes, doesn't include anything for headline nodes. If I get to adding backlinks for headline nodes as well I should show backlinks from headlines in the same file as well. - ‘org-roam--get-backlinks’ has been removed and is now replaced by ‘org-roam-backlinks-get’. The new function returns a list of ‘org-roam-backlink’ objects, which is different from what was returned before. - ‘org-roam-format-link’ has been removed. This was just a small wrapper around ‘org-link-make-string’. For now I've hard-coded the ‘file:’ link type since it's easy, but in the future this should probably use the org id instead so that it doesn't just go to the right file, but also the right heading. The line number could also be added. - In ‘nroam-backlinks--insert-backlink’ the ‘backlink’ argument is now an ‘org-roam-backlink’ object, not a string and a property list. - ‘nroam--fix-links’ has been removed for now since generally in org-roam v2 everything uses ‘id:’ links that are completely independent of where their source (or target) file are located.
-rw-r--r--nroam-backlinks.el29
-rw-r--r--nroam-utils.el5
2 files changed, 18 insertions, 16 deletions
diff --git a/nroam-backlinks.el b/nroam-backlinks.el
index f4ee29e..ba5f140 100644
--- a/nroam-backlinks.el
+++ b/nroam-backlinks.el
@@ -47,13 +47,18 @@
(defun nroam-backlinks--get-backlinks ()
"Return a list of backlinks for the current buffer."
- (if-let* ((file-path (buffer-file-name (current-buffer)))
- (titles (org-roam--extract-titles)))
- (org-roam--get-backlinks (cons file-path titles))))
+ (save-excursion
+ (goto-char (point-min))
+ (let ((node (org-roam-node-at-point)))
+ (seq-remove (lambda (b)
+ (string= (org-roam-node-file (org-roam-backlink-source-node b))
+ (org-roam-node-file node)))
+ (org-roam-backlinks-get node)))))
(defun nroam-backlinks--group (backlinks)
"Return BACKLINKS grouped by source file."
- (seq-group-by #'car backlinks))
+ (seq-group-by (lambda (l) (org-roam-node-file (org-roam-backlink-source-node l)))
+ backlinks))
(defun nroam-backlinks--insert-heading (count)
"Insert the heading for the backlinks section with a COUNT."
@@ -66,19 +71,21 @@
"Insert all backlinks in GROUP."
(let* ((file (car group))
(backlinks (cdr group))
- (title (org-roam-format-link file
- (org-roam-db--get-title file)
- "file")))
+ (title (org-link-make-string (concat "file:" file)
+ (caar (org-roam-db-query
+ [:select title :from nodes :where (= file $s1)]
+ file)))))
(nroam--insert-heading 3 title)
(nroam--do-separated-by-newlines #'nroam-backlinks--insert-backlink backlinks)))
(defun nroam-backlinks--insert-backlink (backlink)
"Insert the source element where BACKLINK is defined."
- (seq-let (file _ props) backlink
- (when-let* ((point (plist-get props :point))
- (elt (nroam-backlinks--crawl-source file point))
+ (let* ((backlink-node (org-roam-backlink-source-node backlink))
+ (file (org-roam-node-file backlink-node))
+ (point (org-roam-backlink-point backlink)))
+ (when-let* ((elt (nroam-backlinks--crawl-source file point))
(type (plist-get elt :type))
- (content (nroam--fix-links (string-trim (plist-get elt :string)) file))
+ (content (org-roam-preview-get-contents file point) file)
(beg (point)))
(let ((outline (plist-get elt :outline))
(full-outline (plist-get elt :full-outline)))
diff --git a/nroam-utils.el b/nroam-utils.el
index 737691b..a3154fe 100644
--- a/nroam-utils.el
+++ b/nroam-utils.el
@@ -55,10 +55,5 @@ Insert a single newline between each call to FUNCTION."
(funcall function item))
sequence))
-(defun nroam--fix-links (content origin)
- "Correct all relative links in CONTENT from ORIGIN.
-Temporary fix until `org-roam' v2 is out."
- (org-roam-buffer-expand-links content origin))
-
(provide 'nroam-utils)
;;; nroam-utils.el ends here