I have a capture template which utilizes %^g to prompt me for a tag to
add to a headline which already has a tag.  An example to demonstrate
is:

* TODO %? %^g                                             :foo:

If I call this template and give it "bar" when prompted for a tag, it
results in (where | is the cursor position):

* TODO | :bar:                                            :foo:

And bar is recognized as a tag.

I've been able to resolve this with the attached patch.  However,
looking at the git history of that code it seems the intent might have
been to prevent some recursive resolution so I'm not sure if this breaks
that.

I've realized I could also attach the %^g to :foo: tag in the template
and things work as expected but if that's the expectation then I think
it's worth mentioning in the docstring for org-capture-templates.

Thanks,
Kevin
diff --git a/lisp/org-capture.el b/lisp/org-capture.el
index 5195b785e..b27de40fe 100644
--- a/lisp/org-capture.el
+++ b/lisp/org-capture.el
@@ -1753,9 +1753,7 @@ (defun org-capture-fill-template (&optional template initial annotation)
 				     'org-tags-history))
 				  ":")))
 		       (when (org-string-nw-p ins)
-			 (unless (eq (char-before) ?:) (insert ":"))
-			 (insert ins)
-			 (unless (eq (char-after) ?:) (insert ":"))
+			 (org-toggle-tag ins 'on)
 			 (when (org-at-heading-p) (org-align-tags)))))
 		    ((or "C" "L")
 		     (let ((insert-fun (if (equal key "C") #'insert

Reply via email to