9

I was configuring some capture templates for org mode but when adding any new template to init file, the default TASK template disappeared.

 (setq org-capture-templates
      '(("t" "Todo" entry (file+headline "~/org/refile.org" "Tasks")
             "* TODO %t %?\n ")
        ("n" "Note" entry (file+headlin "~/org/notes.org")
             "* %?\nEntered on %U\n  %i\n  %a")))

The issue is that when adding any other template, option default for tasks disappeared, but if I add a default task template, some of the expansions for template I like a lot, such as link to file or date of addition I've managed to emulate but no success so far.

where is default template code located?

Forge
  • 275
  • 2
  • 13
  • 1
    Using setq will overwrite anything bound to that variable. Try using push or add-to-list instead. – Dan Dec 28 '18 at 12:26
  • @Dan Actually that won't work - the default templates aren't stored in the variable, they're hard-coded as a fall-back that is only available when the actual value of `org-capture-templates` is `nil`. Which is a bit counter-intuitive to me. – Tyler Dec 28 '18 at 15:08
  • @Tyler : weird, but then there’s a lot of weird stuff under the hood in the org mode source. – Dan Dec 28 '18 at 15:45

1 Answers1

10

The default capture templates are only available if you haven't set a value fororg-capture-templates, which means @Dan's suggestion of using add-to-list won't work in this case. If you want to continue using the default tasks template in addition to your own templates, you need to add it explicitly. It takes a bit of digging to find it, hidden in the code of the function org-capture-select-template:

 '(("t" "Task" entry (file+headline "" "Tasks")
    "* TODO %?\n  %u\n  %a"))

In your case, you'll need something like the following:

(setq org-capture-templates
     '(("t" "Todo" entry (file+headline "~/org/refile.org" "Tasks")
            "* TODO %t %?\n ")
       ("n" "Note" entry (file+headlin "~/org/notes.org")
            "* %?\nEntered on %U\n  %i\n  %a")
       ("T" "Task" entry (file+headline "" "Tasks")
            "* TODO %?\n  %u\n  %a")))

Note that I used a capital T to distinguish it from your Todo entry.

Tyler
  • 21,719
  • 1
  • 52
  • 92