diff --git a/org-roam.el b/org-roam.el index 7226218..d43d65b 100644 --- a/org-roam.el +++ b/org-roam.el @@ -36,13 +36,12 @@ Valid values are (const right)) :group 'org-roam) -(defcustom org-roam-buffer "*org-roam*" - "Org-roam buffer name." - :type 'string +(defcustom org-roam-buffer-width 0.33 "Width of `org-roam' buffer." + :type 'number :group 'org-roam) -(defcustom org-roam-preview-content-delimiter "------" - "Delimiter for preview content." +(defcustom org-roam-buffer "*org-roam*" + "Org-roam buffer name." :type 'string :group 'org-roam) @@ -341,6 +340,18 @@ This is equivalent to removing the node from the graph." (org-element-property :value kw))) :first-match t))) +(defun org-roam--extract-file-title (file) + "Extract the title from `FILE'." + (with-temp-buffer + (insert-file-contents file) + (org-element-map + (org-element-parse-buffer) + 'keyword + (lambda (kw) + (when (string= (org-element-property :key kw) "TITLE") + (org-element-property :value kw))) + :first-match t))) + (defun org-roam-update (file-path) "Show the backlinks for given org file for file at `FILE-PATH'." (when org-roam-cache @@ -353,16 +364,23 @@ This is equivalent to removing the node from the graph." (org-mode)) (make-local-variable 'org-return-follows-link) (setq org-return-follows-link t) - (insert title) - (insert "\n\n* Backlinks\n") - (when-let (backlinks (gethash file-path (plist-get org-roam-cache :backward))) - (maphash (lambda (file-from contents) - (insert (format "** [[file:%s][%s]]\n" file-from (org-roam--get-id file-from))) - (dolist (content contents) - (insert (format "%s\n" org-roam-preview-content-delimiter)) - (insert (s-replace "\n" " " content)) - (insert (format "\n%s\n\n" org-roam-preview-content-delimiter)))) - backlinks))) + (insert + (propertize title 'font-lock-face 'org-document-title)) + (if-let ((backlinks (gethash file-path (plist-get org-roam-cache :backward)))) + (progn + (insert (format "\n\n* %d Backlinks\n" + (hash-table-count backlinks))) + (maphash (lambda (file-from contents) + (insert (format "** [[file:%s][%s]]\n" + file-from + (or (org-roam--extract-file-title file-from) + (org-roam--get-id file-from)))) + (dolist (content contents) + (insert (concat (propertize (s-trim (s-replace "\n" " " content)) + 'font-lock-face 'org-block) + "\n\n")))) + backlinks)) + (insert "\n\n* No backlinks!"))) (read-only-mode 1))) (setq org-roam-current-file file-path)))