# YAML
YAML support is available natively in Zed.
- Tree-sitter: [zed-industries/tree-sitter-yaml](https://github.com/zed-industries/tree-sitter-yaml)
- Language Server: [redhat-developer/yaml-language-server](https://github.com/redhat-developer/yaml-language-server)
## Configuration
You can configure various [yaml-language-server settings](https://github.com/redhat-developer/yaml-language-server?tab=readme-ov-file#language-server-settings) by adding them to your Zed settings.json in a `yaml-language-server` block under the `lsp` key. For example:
```json
"lsp": {
"yaml-language-server": {
"settings": {
"yaml": {
"keyOrdering": true,
"format": {
"singleQuote": true
},
"schemas": {
"http://json.schemastore.org/composer": ["/*"],
"../relative/path/schema.json": ["/config*.yaml"]
}
}
}
}
}
```
Note, settings keys must be nested, so `yaml.keyOrdering` becomes `{"yaml": { "keyOrdering": true }}`.
## Formatting
By default, Zed uses Prettier for formatting YAML files.
### Prettier Formatting
You can customize the formatting behavior of Prettier. For example to use single-quotes in yaml files add the following to your `.prettierrc` configuration file:
```json
{
"overrides": [
{
"files": ["*.yaml", "*.yml"],
"options": {
"singleQuote": false
}
}
]
}
```
### yaml-language-server Formatting
To use `yaml-language-server` instead of Prettier for YAML formatting, add the following to your Zed `settings.json`:
```json
"languages": {
"YAML": {
"formatter": "language_server"
}
}
```
## Schemas
By default yaml-language-server will attempt to determine the correct schema for a given yaml file and retrieve the appropriate JSON Schema from [Json Schema Store](https://schemastore.org/).
You can override any auto-detected schema via the `schemas` settings key (demonstrated above) or by providing an [inlined schema](https://github.com/redhat-developer/yaml-language-server#using-inlined-schema) reference via a modeline comment at the top of your yaml file:
```yaml
# yaml-language-server: $schema=https://json.schemastore.org/github-action.json
name: Issue Assignment
on:
issues:
types: [oppened]
```
You can disable the automatic detection and retrieval of schemas from the JSON Schema if desired: