From bd3c97bb305b50d00c96ea927297134f915dc688 Mon Sep 17 00:00:00 2001 From: Leo Vivier Date: Sun, 26 Apr 2020 11:51:32 +0200 Subject: [PATCH] (feat) conditionally pluralize heading in org-roam-buffer (#521) --- org-roam-buffer.el | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/org-roam-buffer.el b/org-roam-buffer.el index e67c1fb..2cecee9 100644 --- a/org-roam-buffer.el +++ b/org-roam-buffer.el @@ -100,6 +100,16 @@ When non-nil, the window will not be closed when deleting other windows." 'font-lock-face 'org-document-title))) +(defun org-roam--pluralize (string number) + "Conditionally pluralize STRING if NUMBER is above 1." + (let ((l (pcase number + ((pred (listp)) (length number)) + ((pred (integerp)) number) + (wrong-type (signal 'wrong-type-argument + `((listp integerp) + ,wrong-type)))))) + (format "%s%s" string (if (> l 1) "s" "")))) + (defun org-roam-buffer--insert-citelinks () "Insert citation backlinks for the current buffer." (if-let* ((roam-key (with-temp-buffer @@ -108,8 +118,9 @@ When non-nil, the window will not be closed when deleting other windows." (key-backlinks (org-roam--get-backlinks (s-chop-prefix "cite:" roam-key))) (grouped-backlinks (--group-by (nth 0 it) key-backlinks))) (progn - (insert (format "\n\n* %d Cite backlinks\n" - (length key-backlinks))) + (insert (let ((l (length key-backlinks))) + (format "\n\n* %d %s\n" + l (org-roam--pluralize "Cite backlink" l)))) (dolist (group grouped-backlinks) (let ((file-from (car group)) (bls (cdr group))) @@ -133,8 +144,9 @@ When non-nil, the window will not be closed when deleting other windows." (backlinks (org-roam--get-backlinks file-path)) (grouped-backlinks (--group-by (nth 0 it) backlinks))) (progn - (insert (format "\n\n* %d Backlinks\n" - (length backlinks))) + (insert (let ((l (length backlinks))) + (format "\n\n* %d %s\n" + l (org-roam--pluralize "Backlink" l)))) (dolist (group grouped-backlinks) (let ((file-from (car group)) (bls (cdr group)))