Indent dblock items to same column as the block itself

This commit is contained in:
Chris Barrett
2023-01-29 22:27:05 +13:00
parent b4322641ff
commit 12cabfa706

View File

@@ -173,9 +173,13 @@ their blocks updated automatically."
(plisty-define org-roam-dblocks-link (plisty-define org-roam-dblocks-link
:required (:id :desc)) :required (:id :desc))
(defun org-roam-dblocks--link-to-list-item (link) (defun org-roam-dblocks--make-list-item-formatter (params)
(concat "- " (org-link-make-string (concat "id:" (org-roam-dblocks-link-id link)) (let* ((indent (org-roam-dblocks-args-indent params))
(org-roam-dblocks-link-desc link)))) (prefix (concat (make-string indent ?\ ) "- ")))
(lambda (link)
(concat prefix
(org-link-make-string (concat "id:" (org-roam-dblocks-link-id link))
(org-roam-dblocks-link-desc link))))))
(defalias 'org-roam-dblocks--link-sorting (defalias 'org-roam-dblocks--link-sorting
(-on #'string-lessp (-compose #'downcase #'org-roam-dblocks-link-desc))) (-on #'string-lessp (-compose #'downcase #'org-roam-dblocks-link-desc)))
@@ -183,7 +187,7 @@ their blocks updated automatically."
(plisty-define org-roam-dblocks-args (plisty-define org-roam-dblocks-args
:optional (:id :match :tags :only-missing :optional (:id :match :tags :only-missing
:name :indentation-column :content :forbidden-ids :name :indentation-column :content :forbidden-ids
:filter :remove)) :filter :remove :indent))
(defun org-roam-dblocks--make-link-formatter (params) (defun org-roam-dblocks--make-link-formatter (params)
(let ((regexp-parser (when-let* ((matcher (org-roam-dblocks-args-match params))) (let ((regexp-parser (when-let* ((matcher (org-roam-dblocks-args-match params)))
@@ -344,12 +348,16 @@ and old content."
;; Defer to default implementation for any dblocks we don't define in ;; Defer to default implementation for any dblocks we don't define in
;; this file.. ;; this file..
(apply fn args) (apply fn args)
(let* ((node-id (ignore-errors (let* ((indent (save-excursion
(goto-char (match-beginning 0))
(back-to-indentation)
(current-column)))
(node-id (ignore-errors
(save-match-data (save-match-data
(org-roam-node-id (org-roam-node-at-point))))) (org-roam-node-id (org-roam-node-at-point)))))
(params (append (list :name name) (params (append (list :name name)
(read (concat "(" (match-string 3) ")")) (read (concat "(" (match-string 3) ")"))
(list :id node-id))) (list :id node-id :indent indent)))
(content-start (match-end 0)) (content-start (match-end 0))
(content-end (if (re-search-forward org-dblock-end-re nil t) (content-end (if (re-search-forward org-dblock-end-re nil t)
(1- (match-beginning 0)) (1- (match-beginning 0))
@@ -395,7 +403,7 @@ and old content."
(-keep (-compose (org-roam-dblocks--compiled-predicates params) #'org-roam-backlink-source-node)) (-keep (-compose (org-roam-dblocks--compiled-predicates params) #'org-roam-backlink-source-node))
(seq-map (org-roam-dblocks--make-link-formatter params)) (seq-map (org-roam-dblocks--make-link-formatter params))
(seq-sort 'org-roam-dblocks--link-sorting) (seq-sort 'org-roam-dblocks--link-sorting)
(seq-map #'org-roam-dblocks--link-to-list-item)))) (seq-map (org-roam-dblocks--make-list-item-formatter params)))))
(string-join lines "\n"))) (string-join lines "\n")))
;;;###autoload ;;;###autoload
@@ -429,7 +437,7 @@ and old content."
(-keep (org-roam-dblocks--compiled-predicates params)) (-keep (org-roam-dblocks--compiled-predicates params))
(seq-map (org-roam-dblocks--make-link-formatter params)) (seq-map (org-roam-dblocks--make-link-formatter params))
(seq-sort #'org-roam-dblocks--link-sorting) (seq-sort #'org-roam-dblocks--link-sorting)
(seq-map #'org-roam-dblocks--link-to-list-item)))) (seq-map (org-roam-dblocks--make-list-item-formatter params)))))
(string-join lines "\n"))) (string-join lines "\n")))
;;;###autoload ;;;###autoload