In writing PHP snippets, I ran into this issue and only discovered this has to be done through reviewing examples of other PHP snippets. I think it would be useful to include some mention of this behavior in the documentation - although I'm not great at writing docs and not sure if this is the best place or way to write this out. Open to any feedback on this or perfectly okay if maintainers find this unnecessary. Release Notes: - N/A --------- Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
2.3 KiB
title, description
| title | description |
|---|---|
| Snippets - Zed | Create and use code snippets in Zed with tab stops, placeholders, variables, and language-scoped triggers. |
Snippets
Use the {#action snippets::ConfigureSnippets} action to create a new snippets file or edit an existing snippets file for a specified scope.
The snippets are located in ~/.config/zed/snippets directory to which you can navigate to with the {#action snippets::OpenFolder} action.
Example configuration
{
// Each snippet must have a name and body, but the prefix and description are optional.
// The prefix is used to trigger the snippet, but when omitted then the name is used.
// Use placeholders like $1, $2 or ${1:defaultValue} to define tab stops.
// The $0 determines the final cursor position.
// Placeholders with the same value are linked.
// If the snippet contains the $ symbol outside of a placeholder, it must be escaped with two slashes (e.g. \\$var).
"Log to console": {
"prefix": "log",
"body": ["console.info(\"Hello, ${1:World}!\")", "$0"],
"description": "Logs to console"
}
}
Scopes
The scope is determined by the language name in lowercase e.g. python.json for Python, shell script.json for Shell Script, but there are some exceptions to this rule:
| Scope | Filename |
|---|---|
| Global | snippets.json |
| JSX | javascript.json |
| Plain Text | plaintext.json |
To create JSX snippets you have to use javascript.json snippets file, instead of jsx.json, but this does not apply to TSX and TypeScript which follow the above rule.
Known Limitations
- Only the first prefix is used when a list of prefixes is passed in.
- Currently only the
jsonsnippet file format is supported, even though thesimple-completion-language-serversupports bothjsonandtomlfile formats.
See also
The feature_paths option in simple-completion-language-server is disabled by default.
If you want to enable it you can add the following to your settings.json:
{
"lsp": {
"snippet-completion-server": {
"settings": {
"feature_paths": true
}
}
}
}
For more configuration information, see the simple-completion-language-server instructions.