mirror of
https://github.com/org-roam/org-roam
synced 2025-08-01 12:17:21 -05:00
(feat): Add customize settings to org-roam-capture-templates
(#924)
* (feat): Add customize settings to `org-roam-capture-templates` Declare `org-roam-capture-templates` with `defcustom` and update the docstring. Co-authored-by: Leo Vivier <leo.vivier+dev@gmail.com>
This commit is contained in:
committed by
GitHub
parent
569aeb84ed
commit
f9fea29c44
@ -82,30 +82,93 @@ note with the given `ref'.")
|
|||||||
(defconst org-roam-capture--template-keywords '(:file-name :head)
|
(defconst org-roam-capture--template-keywords '(:file-name :head)
|
||||||
"Keywords used in `org-roam-capture-templates' specific to Org-roam.")
|
"Keywords used in `org-roam-capture-templates' specific to Org-roam.")
|
||||||
|
|
||||||
(defvar org-roam-capture-templates
|
(defcustom org-roam-capture-templates
|
||||||
'(("d" "default" plain (function org-roam-capture--get-point)
|
'(("d" "default" plain (function org-roam-capture--get-point)
|
||||||
"%?"
|
"%?"
|
||||||
:file-name "%<%Y%m%d%H%M%S>-${slug}"
|
:file-name "%<%Y%m%d%H%M%S>-${slug}"
|
||||||
:head "#+title: ${title}\n"
|
:head "#+title: ${title}\n"
|
||||||
:unnarrowed t))
|
:unnarrowed t))
|
||||||
"Capture templates for Org-roam.
|
"Capture templates for Org-roam.
|
||||||
The capture templates are an extension of
|
The Org-roam capture-templates builds on the default behaviours of
|
||||||
`org-capture-templates', and the documentation there also
|
`org-capture-templates' by expanding them in 3 areas:
|
||||||
applies.
|
|
||||||
|
|
||||||
`org-capture-templates' are extended in 3 ways:
|
1. Template-expansion capabilities are extended with additional
|
||||||
|
custom syntax. See `org-roam-capture--fill-template' for more
|
||||||
|
details.
|
||||||
|
|
||||||
1. Template expansion capabilities are extended with additional custom syntax.
|
2. The `:file-name' key is added, which defines the naming format
|
||||||
See `org-roam-capture--fill-template' for more details.
|
to use when creating new notes. This file-name is relative to
|
||||||
|
`org-roam-directory', and is without the file-extension.
|
||||||
2. The `:file-name' key is added, which expands to the file-name
|
|
||||||
of the note if it creates a new file. This file-name is
|
|
||||||
relative to `org-roam-directory', and is without the
|
|
||||||
file-extension.
|
|
||||||
|
|
||||||
3. The `:head' key is added, which contains the template that is
|
3. The `:head' key is added, which contains the template that is
|
||||||
inserted on initial creation (added only once). This is where
|
inserted upon the creation of a new file. This is where you
|
||||||
insertion of any note metadata should go.")
|
should add your note metadata should go.
|
||||||
|
|
||||||
|
Each template should have the following structure:
|
||||||
|
|
||||||
|
\(KEY DESCRIPTION `plain' `(function org-roam-capture--get-point)'
|
||||||
|
TEMPLATE
|
||||||
|
`:file-name' FILENAME-FORMAT
|
||||||
|
`:head' HEADER-FORMAT
|
||||||
|
`:unnarrowed t'
|
||||||
|
OPTIONS-PLIST)
|
||||||
|
|
||||||
|
The elements of a template-entry and their placement are the same
|
||||||
|
as in `org-capture-templates', except that the entry type must
|
||||||
|
always be the symbol `plain', and that the target must always be
|
||||||
|
the list `(function org-roam-capture--get-point)'.
|
||||||
|
|
||||||
|
Org-roam requires the plist elements `:file-name' and `:head' to
|
||||||
|
be present, and it’s recommended that `:unnarrowed' be set to t."
|
||||||
|
:group 'org-roam
|
||||||
|
;; Adapted from `org-capture-templates'
|
||||||
|
:type
|
||||||
|
'(repeat
|
||||||
|
(choice :value ("d" "default" plain (function org-roam-capture--get-point)
|
||||||
|
"%?"
|
||||||
|
:file-name "%<%Y%m%d%H%M%S>-${slug}"
|
||||||
|
:head "#+title: ${title}\n"
|
||||||
|
:unnarrowed t)
|
||||||
|
(list :tag "Multikey description"
|
||||||
|
(string :tag "Keys ")
|
||||||
|
(string :tag "Description"))
|
||||||
|
(list :tag "Template entry"
|
||||||
|
(string :tag "Keys ")
|
||||||
|
(string :tag "Description ")
|
||||||
|
(const :format "" plain)
|
||||||
|
(const :format "" (function org-roam-capture--get-point))
|
||||||
|
(choice :tag "Template "
|
||||||
|
(string :tag "String"
|
||||||
|
:format "String:\n \
|
||||||
|
Template string :\n%v")
|
||||||
|
(list :tag "File"
|
||||||
|
(const :format "" file)
|
||||||
|
(file :tag "Template file "))
|
||||||
|
(list :tag "Function"
|
||||||
|
(const :format "" function)
|
||||||
|
(function :tag "Template function ")))
|
||||||
|
(const :format "File name format :" :file-name)
|
||||||
|
(string :format " %v" :value "#+title: ${title}\n")
|
||||||
|
(const :format "Header format :" :head)
|
||||||
|
(string :format "\n%v" :value "%<%Y%m%d%H%M%S>-${slug}")
|
||||||
|
(const :format "" :unnarrowed) (const :format "" t)
|
||||||
|
(plist :inline t
|
||||||
|
:tag "Options"
|
||||||
|
;; Give the most common options as checkboxes
|
||||||
|
:options
|
||||||
|
(((const :format "%v " :prepend) (const t))
|
||||||
|
((const :format "%v " :immediate-finish) (const t))
|
||||||
|
((const :format "%v " :jump-to-captured) (const t))
|
||||||
|
((const :format "%v " :empty-lines) (const 1))
|
||||||
|
((const :format "%v " :empty-lines-before) (const 1))
|
||||||
|
((const :format "%v " :empty-lines-after) (const 1))
|
||||||
|
((const :format "%v " :clock-in) (const t))
|
||||||
|
((const :format "%v " :clock-keep) (const t))
|
||||||
|
((const :format "%v " :clock-resume) (const t))
|
||||||
|
((const :format "%v " :time-prompt) (const t))
|
||||||
|
((const :format "%v " :tree-type) (const week))
|
||||||
|
((const :format "%v " :table-line-pos) (string))
|
||||||
|
((const :format "%v " :kill-buffer) (const t))))))))
|
||||||
|
|
||||||
(defvar org-roam-capture-immediate-template
|
(defvar org-roam-capture-immediate-template
|
||||||
(append (car org-roam-capture-templates) '(:immediate-finish t))
|
(append (car org-roam-capture-templates) '(:immediate-finish t))
|
||||||
|
Reference in New Issue
Block a user