52 lines
1.9 KiB
Markdown
52 lines
1.9 KiB
Markdown
|
Snippets allow you to define custom [[Slash Commands]] that expand snippet style templates inline.
|
|||
|
|
|||
|
# Definition
|
|||
|
You define a snippet by creating a [[Templates|template]] with a `hooks.snippet` attribute that configures the snippet. The following configuration options are supported:
|
|||
|
|
|||
|
* `slashCommand`: expose the snippet via the `/my-snippet` notation.
|
|||
|
* `command`: expose the snippet as a [[Commands|command]].
|
|||
|
* `key`: Bind the snippet to a keyboard shortcut (note: this requires to _also_ specify the `command` configuration).
|
|||
|
* `mac`: Bind the snippet to a Mac-specific keyboard shortcut.
|
|||
|
* `matchRegex` (advanced use only): match the current line against a regular expression, and replace the match with the template’s body.
|
|||
|
* `insertAt`: by default a snippet is inserted at the cursor position, but alternatively it can be inserted at: `line-start`, `line-end`, `page-start` or `page-end`.
|
|||
|
|
|||
|
Minimal example:
|
|||
|
|
|||
|
---
|
|||
|
tags: template
|
|||
|
hooks.snippet:
|
|||
|
slashCommand: meeting-notes
|
|||
|
---
|
|||
|
## Meeting notes for {{today}}!
|
|||
|
|
|||
|
|^|
|
|||
|
|
|||
|
## Frontmatter
|
|||
|
A template’s [[Frontmatter]] is interpreted by SilverBullet’s [[Templates|template]] engine and removed when instantiated. However, to inject frontmatter after instantiation, you can use the `frontmatter` attribute.
|
|||
|
|
|||
|
Example:
|
|||
|
|
|||
|
---
|
|||
|
tags: template
|
|||
|
hooks.snippet.slashCommand: meeting-notes
|
|||
|
frontmatter: |
|
|||
|
date: {{today}}
|
|||
|
---
|
|||
|
## Meeting notes for {{today}}!
|
|||
|
|
|||
|
|^|
|
|||
|
|
|||
|
Which will expand into e.g.
|
|||
|
|
|||
|
---
|
|||
|
date: 2023-11-11
|
|||
|
---
|
|||
|
## Meeting notes for 2023-11-11
|
|||
|
|
|||
|
.
|
|||
|
|
|||
|
When the page already contained frontmatter before inserting the snippet, it will be augmented with the additional frontmatter specified by the template.
|
|||
|
|
|||
|
# Use
|
|||
|
A snippet can be _triggered_ via the specified `slashCommand` via `/slashCommand` or via {[Open Command Palette]} and/or its associate key bindings when `command`, `key`/`mac` are specified.
|