org-capture.el: Conditionally throw an error on missing annotation

* lisp/org-capture.el (org-capture-fill-template): Throw a
user error when :immediate-finish is `t' and when the %a
template could not be expanded.

Thanks to Leo Gaspard for this idea.
This commit is contained in:
Bastien 2020-02-11 14:45:19 +01:00
parent 20ab65482a
commit 78ec8da52a
1 changed files with 7 additions and 1 deletions

View File

@ -1565,7 +1565,13 @@ The template may still contain \"%?\" for cursor positioning."
(let ((a (or (plist-get org-store-link-plist :annotation)
annotation
(org-capture-get :annotation)
"")))
;; When immediately finishing and %a cannot be
;; expanded, through a user error:
(if (org-capture-get :immediate-finish)
(user-error "Missing initial annotation in this template: %s"
(replace-regexp-in-string
"\n" " " (org-capture-get :template)))
""))))
;; Is the link empty? Then we do not want it...
(if (equal a "[[]]") "" a)))
(l-re "\\[\\[\\(.*?\\)\\]\\(\\[.*?\\]\\)?\\]")