All Projects → neoclide → Coc Yaml

neoclide / Coc Yaml

Yaml language server extension for coc.nvim

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Coc Yaml

Pretty Yaml
PyYAML-based module to produce pretty and readable YAML-serialized data
Stars: ✭ 110 (-7.56%)
Mutual labels:  yaml
Just Dashboard
📊 📋 Dashboards using YAML or JSON files
Stars: ✭ 1,511 (+1169.75%)
Mutual labels:  yaml
Napalm Salt
Modules for event-driven network automation and orchestration using Salt
Stars: ✭ 116 (-2.52%)
Mutual labels:  yaml
Yamllint
A linter for YAML files.
Stars: ✭ 1,750 (+1370.59%)
Mutual labels:  yaml
Nvim Ts Rainbow
🌈 Rainbow parentheses for neovim using tree-sitter 🌈
Stars: ✭ 108 (-9.24%)
Mutual labels:  neovim
Nvim Treesitter Context
Show code context
Stars: ✭ 113 (-5.04%)
Mutual labels:  neovim
Toast.vim
🍞 Toast! A colorful, medium-contrast color scheme with full Vim and Neovim support and automatic light and dark variants. Easy to read without frying your retinae.
Stars: ✭ 108 (-9.24%)
Mutual labels:  neovim
Oceanic Material
Oceanic Material Colorscheme on Vim/NeoVim
Stars: ✭ 117 (-1.68%)
Mutual labels:  neovim
Zenbu
🏮 A Jinja2 + YAML based config templater.
Stars: ✭ 114 (-4.2%)
Mutual labels:  yaml
Git Blame.nvim
Git Blame plugin for Neovim written in Lua
Stars: ✭ 114 (-4.2%)
Mutual labels:  neovim
Jobfunnel
Scrape job websites into a single spreadsheet with no duplicates.
Stars: ✭ 1,528 (+1184.03%)
Mutual labels:  yaml
Datafiles
A file-based ORM for Python dataclasses.
Stars: ✭ 113 (-5.04%)
Mutual labels:  yaml
Nvim Example Python Plugin
A simple Neovim Python plugin suitable as a template.
Stars: ✭ 115 (-3.36%)
Mutual labels:  neovim
Ubuntu On Steroids
Developer setup & configuration guide for Ubuntu.
Stars: ✭ 111 (-6.72%)
Mutual labels:  neovim
Gray Matter
Contributing Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Stars: ✭ 2,105 (+1668.91%)
Mutual labels:  yaml
Polka
🐢 dotless files - plz no steel (only cardboard) (sponsored by https://github.com/buffet/kiwmi, plz star & contribute)
Stars: ✭ 109 (-8.4%)
Mutual labels:  neovim
Nvim Autopairs
autopairs for neovim written by lua
Stars: ✭ 112 (-5.88%)
Mutual labels:  neovim
Config Lint
Command line tool to validate configuration files
Stars: ✭ 118 (-0.84%)
Mutual labels:  yaml
Futureproof
A live editor for fragment shaders, powered by Neovim, WebGPU, and Zig!
Stars: ✭ 117 (-1.68%)
Mutual labels:  neovim
Dynaconf
Configuration Management for Python ⚙
Stars: ✭ 2,082 (+1649.58%)
Mutual labels:  yaml

coc-yaml

Fork of vscode-yaml that works with coc.nvim

Supporting

If you like my work, consider supporting me on Patreon or PayPal:

Patreon donate button PayPal donate button

Install

In your vim/neovim, run command:

:CocInstall coc-yaml

Features

screencast

  1. YAML validation:
    • Detects whether the entire file is valid yaml
    • Detects errors such as:
      • Node is not found
      • Node has an invalid key node type
      • Node has an invalid type
      • Node is not a valid child node
  2. Document Outlining (Ctrl + Shift + O):
    • Provides the document outlining of all completed nodes in the file
  3. Auto completion (Ctrl + Space):
    • Auto completes on all commands
    • Scalar nodes autocomplete to schema's defaults if they exist
  4. Hover support:
    • Hovering over a node shows description if provided by schema
  5. Formatter:
    • Allows for formatting the current file

Auto completion and hover support are provided by the schema. Please refer to Language Server Settings to setup a schema

Language Server Settings

The following settings are supported:

  • yaml.format.enable (default: false): Enable/disable default YAML formatter (requires restart)
  • yaml.format.singleQuote (default: false): Use single quotes instead of double quotes
  • yaml.format.bracketSpacing (default: true): Print spaces between brackets in objects
  • yaml.format.proseWrap (default: "preserve"): "always": wrap prose if it exeeds the print width, "never": never wrap the prose, "preserve": wrap prose as-is
  • yaml.format.printWidth: Specify the line length that the printer will wrap on
  • yaml.validate (default: true): Enable/disable validation feature
  • yaml.hover (default: true): Enable/disable hover
  • yaml.completion (default: true): Enable/disable autocompletion
  • yaml.schemas (default: {}): Helps you associate schemas with files in a glob pattern
  • yaml.schemaStore.enable: When set to true the YAML language server will pull in all available schemas from JSON Schema Store
  • yaml.customTags (default: []): Array of custom tags that the parser will validate against. It has two ways to be used. Either an item in the array is a custom tag such as "!Ref" or you can specify the type of the object !Ref should be by doing "!Ref Scalar". For example: ["!Ref", "!Some-Tag Scalar"]. The type of object can be one of Scalar, Sequence, Mapping, Map.
  • [yaml]: VSCode-YAML adds default configuration for all yaml files. More specifically it converts tabs to spaces to ensure valid yaml, sets the tab size, and allows live typing autocompletion. These settings can be modified via the corresponding settings inside the [yaml] section in the settings:
    • editor.insertSpaces
    • editor.tabSize
    • editor.quickSuggestions

Note insertSpaces and tabSize settings may not work, you need ensure &shiftwidth and &expandtab options of your yaml buffer.

Adding custom tags

In order to use the custom tags in your YAML file you need to first specify the custom tags in the setting of your code editor. For example, you can have the following custom tags:

"yaml.customTags": [
    "!Scalar-example scalar",
    "!Seq-example sequence",
    "!Mapping-example mapping"
]

The !Scalar-example would map to a scalar custom tag, the !Seq-example would map to a sequence custom tag, the !Mapping-example would map to a mapping custom tag.

You can then use the newly defined custom tags inside the YAML file:

some_key: !Scalar-example some_value
some_sequence: !Seq-example
  - some_seq_key_1: some_seq_value_1
  - some_seq_key_2: some_seq_value_2
some_mapping: !Mapping-example
  some_mapping_key_1: some_mapping_value_1
  some_mapping_key_2: some_mapping_value_2
Associating a schema to a glob pattern via yaml.schemas:

yaml.schemas applies a schema to a file. In other words, the schema (placed on the left) is applied to the glob pattern on the right. Your schema can be local or online. Your schema must be a relative path and not an absolute path.

When associating a schema it should follow the format below

"yaml.schemas": {
    "url": "globPattern",
    "Kubernetes": "globPattern"
}

e.g.

"yaml.schemas": {
    "http://json.schemastore.org/composer": ["/*"],
    "file:///home/johnd/some-schema.json": ["some.yaml"],
    "../relative/path/schema.json": ["/config*.yaml"],
    "/Users/johnd/some-schema.json": ["some.yaml"],
}

e.g.

"yaml.schemas": {
    "kubernetes": ["/myYamlFile.yaml"]
}

e.g.

"yaml.schemas": {
    "http://json.schemastore.org/composer": ["/*"],
    "kubernetes": ["/myYamlFile.yaml"]
}

Since 0.11.0 YAML Schemas can be used for validation:

"/home/user/custom_schema.yaml": "someFilePattern.yaml"
  • The entrance point for yaml.schemas is location in user and workspace settings
  • Supports schemas through schema store as well as any other schema url
  • Supports 'yamlValidation' point which allows you to contribute a schema for a specific type of yaml file (Similar to jsonValidation) e.g.
{
  "contributes": {
    "yamlValidation": [
      {
        "fileMatch": "yourfile.yml",
        "url": "./schema.json"
      }
    ]
  }
}

This extension allows you to specify json schemas that you want to validate against the yaml that you write. In the vscode user and workspace preferences you can set a url and a glob pattern that you want to validate against the schema. Kubernetes is an optional field. They do not require a url as the language server will provide that. You just need the keyword kubernetes and a glob pattern.

Debug

Add "yaml.trace.server": "verbose" to your coc-settings.json to get verbose output of LSP communication.

Open output channel by command:

:CocCommand workspace.showOutput yaml

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].