(feat): add support for filtering backlinks. (#2247)

* Add support for filtering backlinks.

See #1043.

* Add documentation for backlinks filter
master
Samuel W. Flint 3 years ago committed by GitHub
parent 25c476791e
commit f9228ce319
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      doc/org-roam.org
  2. 18
      org-roam-mode.el

@ -644,6 +644,19 @@ rendering reference links), set ~org-roam-mode-sections~ as follows:
org-roam-reflinks-section)) org-roam-reflinks-section))
#+end_src #+end_src
The backlinks section ~org-roam-backlinks-section~ also supports a
predicate to filter backlinks, ~:show-backlink-p~. This can be used
as follows:
#+begin_src emacs-lisp
(defun my-org-roam-show-backlink-p (backlink)
(not (member "daily" (org-roam-node-tags (org-roam-backlink-source-node backlink)))))
(setq org-roam-mode-sections
'((org-roam-backlinks-section :unique t :show-backlink-p my/org-roam-show-backlink-p)
org-roam-reflinks-section))
#+end_src
** Configuring the Org-roam buffer display ** Configuring the Org-roam buffer display
Org-roam does not control how the pop-up buffer is displayed: this is left to Org-roam does not control how the pop-up buffer is displayed: this is left to

@ -514,19 +514,25 @@ Sorts by title."
(string< (org-roam-node-title (org-roam-backlink-source-node a)) (string< (org-roam-node-title (org-roam-backlink-source-node a))
(org-roam-node-title (org-roam-backlink-source-node b)))) (org-roam-node-title (org-roam-backlink-source-node b))))
(cl-defun org-roam-backlinks-section (node &key (unique nil)) (cl-defun org-roam-backlinks-section (node &key (unique nil) (show-backlink-p nil))
"The backlinks section for NODE. "The backlinks section for NODE.
When UNIQUE is nil, show all positions where references are found. When UNIQUE is nil, show all positions where references are found.
When UNIQUE is t, limit to unique sources." When UNIQUE is t, limit to unique sources.
When SHOW-BACKLINK-P is not null, only show backlinks for which
this predicate is not nil."
(when-let ((backlinks (seq-sort #'org-roam-backlinks-sort (org-roam-backlinks-get node :unique unique)))) (when-let ((backlinks (seq-sort #'org-roam-backlinks-sort (org-roam-backlinks-get node :unique unique))))
(magit-insert-section (org-roam-backlinks) (magit-insert-section (org-roam-backlinks)
(magit-insert-heading "Backlinks:") (magit-insert-heading "Backlinks:")
(dolist (backlink backlinks) (dolist (backlink backlinks)
(org-roam-node-insert-section (when (or (null show-backlink-p)
:source-node (org-roam-backlink-source-node backlink) (and (not (null show-backlink-p))
:point (org-roam-backlink-point backlink) (funcall show-backlink-p backlink)))
:properties (org-roam-backlink-properties backlink))) (org-roam-node-insert-section
:source-node (org-roam-backlink-source-node backlink)
:point (org-roam-backlink-point backlink)
:properties (org-roam-backlink-properties backlink))))
(insert ?\n)))) (insert ?\n))))
;;;; Reflinks ;;;; Reflinks

Loading…
Cancel
Save