diff --git a/org-roam-db.el b/org-roam-db.el index a518ec7..ab5f308 100644 --- a/org-roam-db.el +++ b/org-roam-db.el @@ -108,7 +108,7 @@ ROAM_REFS." :type '(alist)) ;;; Variables -(defconst org-roam-db-version 19) +(defconst org-roam-db-version 18) (defvar org-roam-db--connection (make-hash-table :test #'equal) "Database connection to Org-roam database.") @@ -214,7 +214,7 @@ The query is expected to be able to fail, in this situation, run HANDLER." (source :not-null) (dest :not-null) (type :not-null) - properties] + (properties :not-null)] (:foreign-key [source] :references nodes [id] :on-delete :cascade))))) (defconst org-roam-db--table-indices @@ -507,8 +507,11 @@ INFO is the org-element parsed buffer." (path (if (not option) path (substring path 0 (match-beginning 0)))) (source (org-roam-id-at-point)) - (properties (when option - (list :search-option option)))) + (properties (list :outline (ignore-errors + ;; This can error if link is not under any headline + (org-get-outline-path 'with-self 'use-cache)))) + (properties (if option (plist-put properties :search-option option) + properties))) ;; For Org-ref links, we need to split the path into the cite keys (when (and source path) (if (and (boundp 'org-ref-cite-types) @@ -530,7 +533,9 @@ INFO is the org-element parsed buffer." (goto-char (org-element-property :begin citation)) (let ((key (org-element-property :key citation)) (source (org-roam-id-at-point)) - (properties nil)) + (properties (list :outline (ignore-errors + ;; This can error if link is not under any headline + (org-get-outline-path 'with-self 'use-cache))))) (when (and source key) (org-roam-db-query [:insert :into citations diff --git a/org-roam-mode.el b/org-roam-mode.el index a0af684..8b3b660 100644 --- a/org-roam-mode.el +++ b/org-roam-mode.el @@ -369,7 +369,7 @@ run at `post-command-hook'." (node :initform nil)) "A `magit-section' used by `org-roam-mode' to outline NODE in its own heading.") -(cl-defun org-roam-node-insert-section (&key source-node point _properties) +(cl-defun org-roam-node-insert-section (&key source-node point properties) "Insert section for a link from SOURCE-NODE to some other node. The other node is normally `org-roam-buffer-current-node'. @@ -393,9 +393,7 @@ the same time: other node) at POINT. Acts a child section of the previous one." (magit-insert-section section (org-roam-node-section) - (let ((outline (if-let ((outline (append - (org-roam-node-olp source-node) - (list (org-roam-node-title source-node))))) + (let ((outline (if-let ((outline (plist-get properties :outline))) (mapconcat #'org-link-display-format outline " > ") "Top"))) (insert (concat (propertize (org-roam-node-title source-node) @@ -536,7 +534,8 @@ SECTION-HEADING is the string used as a heading for the backlink section." (funcall show-backlink-p backlink))) (org-roam-node-insert-section :source-node (org-roam-backlink-source-node backlink) - :point (org-roam-backlink-point backlink)))) + :point (org-roam-backlink-point backlink) + :properties (org-roam-backlink-properties backlink)))) (insert ?\n)))) ;;;; Reflinks @@ -591,7 +590,8 @@ Sorts by title." (dolist (reflink reflinks) (org-roam-node-insert-section :source-node (org-roam-reflink-source-node reflink) - :point (org-roam-reflink-point reflink))) + :point (org-roam-reflink-point reflink) + :properties (org-roam-reflink-properties reflink))) (insert ?\n)))) ;;;; Grep