From e3ff54616ec8c7c921aee50efd1400e7514cdfb0 Mon Sep 17 00:00:00 2001 From: Jethro Kuan Date: Fri, 4 Sep 2020 21:05:49 +0800 Subject: [PATCH] (feat): sort backlinks by occurrence (#1086) Sort display of backlinks in backlinks buffer by occurrence. The default link extraction behaviour causes it to be inserted roughly in the reverse order. --- org-roam-buffer.el | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/org-roam-buffer.el b/org-roam-buffer.el index 85301c2..3ee270f 100644 --- a/org-roam-buffer.el +++ b/org-roam-buffer.el @@ -163,24 +163,29 @@ For example: (setq org-roam-buffer-window-parameters '((no-other-window . t)))" l (org-roam-buffer--pluralize "Backlink" l)))) (dolist (group grouped-backlinks) (let ((file-from (car group)) - (bls (cdr group))) + (bls (mapcar (lambda (row) + (nth 2 row)) (cdr group)))) (insert (format "** [[file:%s][%s]]\n" file-from (org-roam--get-title-or-slug file-from))) - (dolist (backlink bls) - (pcase-let ((`(,file-from _ ,props) backlink)) - (insert "*** " - (if-let ((outline (plist-get props :outline))) - (string-join outline " > ") - "Top") - "\n" - (propertize - (s-trim (s-replace "\n" " " - (plist-get props :content))) - 'help-echo "mouse-1: visit backlinked note" - 'file-from file-from - 'file-from-point (plist-get props :point)) - "\n\n")))))) + ;; Sort backlinks according to time of occurrence in buffer + (setq bls (seq-sort-by (lambda (bl) + (plist-get bl :point)) + #'< + bls)) + (dolist (props bls) + (insert "*** " + (if-let ((outline (plist-get props :outline))) + (string-join outline " > ") + "Top") + "\n" + (propertize + (s-trim (s-replace "\n" " " + (plist-get props :content))) + 'help-echo "mouse-1: visit backlinked note" + 'file-from file-from + 'file-from-point (plist-get props :point)) + "\n\n"))))) (insert "\n\n* No backlinks!"))) (defun org-roam-buffer-update ()