Allow empty template when inserting checklists to Org item
In some cases, the backlinks may be sufficient as checklist.
This commit is contained in:
parent
06ec5f3d9e
commit
69f3f80a6e
|
@ -849,43 +849,14 @@ The template is determined by the TEMPLATE_ID property, which
|
||||||
must be an ID referencing the proper template item. If that
|
must be an ID referencing the proper template item. If that
|
||||||
property is not set, search for the topmost sibling of the
|
property is not set, search for the topmost sibling of the
|
||||||
current item and see whether its headline is matching
|
current item and see whether its headline is matching
|
||||||
\"^Template.*\"; if so, use its body as template, and barf
|
\"^Template.*\"; if so, use its body as template."
|
||||||
otherwise."
|
|
||||||
(interactive)
|
(interactive)
|
||||||
|
|
||||||
(unless (derived-mode-p 'org-mode)
|
(unless (derived-mode-p 'org-mode)
|
||||||
(user-error "Not in Org mode, aborting"))
|
(user-error "Not in Org mode, aborting"))
|
||||||
|
|
||||||
(let (template-pom)
|
;; Insert relevant backlinks, when available.
|
||||||
|
(let ((parent-depth (--when-let (org-entry-get (point) "CHECKLIST_BACKLINK_DEPTH" nil)
|
||||||
;; Check for TEMPLATE_ID property
|
|
||||||
(when-let ((template-id (org-entry-get (point) "TEMPLATE_ID")))
|
|
||||||
(setq template-pom (org-id-find template-id :get-marker))
|
|
||||||
(unless template-pom
|
|
||||||
(warn "TEMPLATE_ID is set, but could not be resolved: %s"
|
|
||||||
template-id)))
|
|
||||||
|
|
||||||
;; If no template has been found so far, search for top-most sibling and
|
|
||||||
;; whether its headline starts with “Template”; use that when found.
|
|
||||||
(unless template-pom
|
|
||||||
(let ((top-most-sibling (condition-case _
|
|
||||||
(save-restriction
|
|
||||||
(save-mark-and-excursion
|
|
||||||
(outline-up-heading 1 'invisible-ok)
|
|
||||||
(outline-next-heading)
|
|
||||||
(point)))
|
|
||||||
(t nil))))
|
|
||||||
(when (and top-most-sibling
|
|
||||||
(integerp top-most-sibling) ; just to make sure we have a
|
|
||||||
; point here
|
|
||||||
(string-match-p "^Template.*"
|
|
||||||
(org-entry-get top-most-sibling "ITEM")))
|
|
||||||
(setq template-pom top-most-sibling))))
|
|
||||||
|
|
||||||
(unless template-pom
|
|
||||||
(user-error "Cannot find template via TEMPLATE_ID property or top-most sibling"))
|
|
||||||
|
|
||||||
(let ((parent-depth (--when-let (org-entry-get (point) "CHECKLIST_BACKLINK_DEPTH" nil)
|
|
||||||
(string-to-number it)))
|
(string-to-number it)))
|
||||||
number-of-backlinks
|
number-of-backlinks
|
||||||
point-before-backlinks)
|
point-before-backlinks)
|
||||||
|
@ -915,8 +886,38 @@ otherwise."
|
||||||
(delete-region point-before-backlinks (point))
|
(delete-region point-before-backlinks (point))
|
||||||
(insert " none.")))
|
(insert " none.")))
|
||||||
|
|
||||||
(insert "\n\nTemplate:\n")
|
;; Insert template, when avilable.
|
||||||
(db/org-copy-body-from-item-to-point template-pom)))
|
(let (template-pom)
|
||||||
|
|
||||||
|
(insert "\n\nTemplate:")
|
||||||
|
|
||||||
|
;; Check for TEMPLATE_ID property
|
||||||
|
(when-let ((template-id (org-entry-get (point) "TEMPLATE_ID")))
|
||||||
|
(setq template-pom (org-id-find template-id :get-marker))
|
||||||
|
(unless template-pom
|
||||||
|
(warn "TEMPLATE_ID is set, but could not be resolved: %s"
|
||||||
|
template-id)))
|
||||||
|
|
||||||
|
;; If no template has been found so far, search for top-most sibling and
|
||||||
|
;; whether its headline starts with “Template”; use that when found.
|
||||||
|
(unless template-pom
|
||||||
|
(let ((top-most-sibling (condition-case _
|
||||||
|
(save-restriction
|
||||||
|
(save-mark-and-excursion
|
||||||
|
(outline-up-heading 1 'invisible-ok)
|
||||||
|
(outline-next-heading)
|
||||||
|
(point)))
|
||||||
|
(t nil))))
|
||||||
|
(when (and top-most-sibling
|
||||||
|
(integerp top-most-sibling) ; just to make sure we have a point here
|
||||||
|
(string-match-p "^Template.*"
|
||||||
|
(org-entry-get top-most-sibling "ITEM")))
|
||||||
|
(setq template-pom top-most-sibling))))
|
||||||
|
|
||||||
|
(if (not template-pom)
|
||||||
|
(insert " none.")
|
||||||
|
(insert "\n")
|
||||||
|
(db/org-copy-body-from-item-to-point template-pom))))
|
||||||
|
|
||||||
(define-obsolete-function-alias 'db/org-copy-template
|
(define-obsolete-function-alias 'db/org-copy-template
|
||||||
'db/org-insert-checklist
|
'db/org-insert-checklist
|
||||||
|
|
Loading…
Reference in New Issue