summaryrefslogtreecommitdiffstatshomepage
path: root/nroam-backlinks.el
diff options
context:
space:
mode:
authorGravatar Nicolas Petton2021-03-04 16:42:13 +0100
committerGravatar Nicolas Petton2021-03-04 16:42:13 +0100
commitdf4ff299f3b20e94277ad1f4f22042d2f6915d43 (patch)
tree4faee93cf8773442dc16e56a7d9364dd546babfb /nroam-backlinks.el
parent5ceb4f6729841a713a9ec2c14ce5bdc0a295e7b4 (diff)
downloadnroam-df4ff299f3b20e94277ad1f4f22042d2f6915d43.tar.gz
nroam-df4ff299f3b20e94277ad1f4f22042d2f6915d43.zip
Refactor nroam-backlinks--insert-backlink
* nroam-backlinks.el (nroam-backlinks--insert-backlink): Refactor by extracting new functions. (nroam-backlinks--insert-backlink-subtree): (nroam-backlinks--insert-backlink-content): (nroam-backlinks--insert-backlink-outline): New functions.
Diffstat (limited to 'nroam-backlinks.el')
-rw-r--r--nroam-backlinks.el42
1 files changed, 27 insertions, 15 deletions
diff --git a/nroam-backlinks.el b/nroam-backlinks.el
index 5619fdc..ca399a1 100644
--- a/nroam-backlinks.el
+++ b/nroam-backlinks.el
@@ -81,28 +81,40 @@
(when-let* ((point (plist-get props :point))
(elt (nroam-backlinks--crawl-source file point))
(type (plist-get elt :type))
- (content (string-trim (plist-get elt :string)))
+ (content (nroam--fix-links (string-trim (plist-get elt :string)) file))
(beg (point)))
(let ((outline (plist-get elt :outline))
(full-outline (plist-get elt :full-outline)))
- (pcase type
- ('headline (progn
- (when outline
- (let ((str-outline (concat "* " (string-join outline " › "))))
- (org-paste-subtree 3 str-outline)
- (goto-char (point-max))))
- (org-paste-subtree (if outline 4 3) (nroam--fix-links content file))
- (goto-char (point-max))))
- (_ (progn
- (when full-outline
- (let ((str-outline (concat "* " (string-join full-outline " › "))))
- (org-paste-subtree 3 str-outline)
- (goto-char (point-max))))
- (insert (nroam--fix-links content file))))))
+ (if (eq type 'headline)
+ (nroam-backlinks--insert-backlink-subtree content outline)
+ (nroam-backlinks--insert-backlink-content content full-outline)))
(set-text-properties beg (point)
`(nroam-link t file ,file point ,point))
(insert "\n"))))
+(defun nroam-backlinks--insert-backlink-subtree (content outline)
+ "Insert CONTENT as a level 4 headline with its subtree.
+When OUTLINE is non-nil, insert it as a heading."
+ (nroam-backlinks--insert-backlink-outline outline)
+ (nroam-backlinks--insert-subtree content 4))
+
+(defun nroam-backlinks--insert-backlink-content (content outline)
+ "Insert CONTENT with OUTLINE as a heading if non-nil."
+ (nroam-backlinks--insert-backlink-outline outline)
+ (insert content))
+
+(defun nroam-backlinks--insert-backlink-outline (outline)
+ "Insert OUTLINE if non-nil as a breadcrumbs heading."
+ (when outline
+ (let ((str-outline (concat "* " (string-join outline " › "))))
+ (nroam-backlinks--insert-subtree str-outline))))
+
+(defun nroam-backlinks--insert-subtree (subtree &optional level)
+ "Insert SUBTREE as a LEVEL headline.
+When nil, LEVEL defaults to 3."
+ (org-paste-subtree (or level 3) subtree)
+ (goto-char (point-max)))
+
(defun nroam-backlinks--crawl-source (file point)
"Return the source element in FILE at POINT."
(with-current-buffer (nroam-backlinks--work-buffer)