All Projects → redhat-developer → Vscode Yaml

redhat-developer / Vscode Yaml

Licence: mit
YAML support for VS Code with built-in kubernetes syntax support

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Vscode Yaml

TextTemplatingCore
T4 Text Templating with .NET Core
Stars: ✭ 24 (-91.81%)
Mutual labels:  visual-studio
Vs Mef
Managed Extensibility Framework (MEF) implementation used by Visual Studio
Stars: ✭ 258 (-11.95%)
Mutual labels:  visual-studio
Structlayout
Visual Studio Extension for C++ struct memory layout visualization
Stars: ✭ 270 (-7.85%)
Mutual labels:  visual-studio
FFmpeg
Unofficial FFmpeg with added custom native Visual Studio project build tools. FFmpeg: A complete, cross-platform solution to record, convert and stream audio and video.
Stars: ✭ 479 (+63.48%)
Mutual labels:  visual-studio
Urde
Data interchange and engine re-implementation for games by Retro Studios | Mirror
Stars: ✭ 253 (-13.65%)
Mutual labels:  visual-studio
Mac Setup
🛠️ Front end web development setup for macOS.
Stars: ✭ 265 (-9.56%)
Mutual labels:  visual-studio
Visual-Studio
A Discord Rich Presence extension for both Visual Studio 2017 and 2019.
Stars: ✭ 80 (-72.7%)
Mutual labels:  visual-studio
S25client
Return To The Roots (Settlers II(R) Clone)
Stars: ✭ 288 (-1.71%)
Mutual labels:  visual-studio
Efdesigner
Entity Framework visual design surface and code-first code generation for EF6, Core and beyond
Stars: ✭ 256 (-12.63%)
Mutual labels:  visual-studio
Ide Php
PHP language support for Atom-IDE
Stars: ✭ 269 (-8.19%)
Mutual labels:  language-server
satysfi-language-server
The SATySFi Language Server
Stars: ✭ 26 (-91.13%)
Mutual labels:  language-server
OptionsSample
A Visual Studio extension sample
Stars: ✭ 14 (-95.22%)
Mutual labels:  visual-studio
Boomerang
Boomerang Decompiler - Fighting the code-rot :)
Stars: ✭ 265 (-9.56%)
Mutual labels:  visual-studio
VS.DiffAllFiles
Visual Studio Extension to make comparing files before and after committing them to Git and TFS faster and easier.
Stars: ✭ 26 (-91.13%)
Mutual labels:  visual-studio
Artoolkitx
artoolkitX
Stars: ✭ 272 (-7.17%)
Mutual labels:  visual-studio
Inventory-Management-System
Inventory Management System by asp.net and MSSQL
Stars: ✭ 27 (-90.78%)
Mutual labels:  visual-studio
Dotnet Db Samples
.NET code samples for Oracle database developers
Stars: ✭ 260 (-11.26%)
Mutual labels:  visual-studio
Vscode Solargraph
A Visual Studio Code extension for Solargraph.
Stars: ✭ 292 (-0.34%)
Mutual labels:  language-server
Efifs
EFI FileSystem drivers
Stars: ✭ 272 (-7.17%)
Mutual labels:  visual-studio
Visualplus
🎨 The VisualPlus Framework (VPF) for WinForms allows you to rapidly deploy professional .NET applications with customizable components and controls.
Stars: ✭ 268 (-8.53%)
Mutual labels:  visual-studio

CI Build Status Marketplace Version

YAML Language Support by Red Hat

Provides comprehensive YAML Language support to Visual Studio Code, via the yaml-language-server, with built-in Kubernetes syntax support.

Supports JSON Schema 7 and below.

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
    • On type formatting auto indent for array items

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: Enable/disable default YAML formatter (requires restart)
  • yaml.format.singleQuote: Use single quotes instead of double quotes
  • yaml.format.bracketSpacing: Print spaces between brackets in objects
  • yaml.format.proseWrap: 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: Enable/disable validation feature
  • yaml.hover: Enable/disable hover
  • yaml.completion: Enable/disable autocompletion
  • yaml.schemas: 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: 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" and it will automatically map !Ref to scalar or you can specify the type of the object !Ref should be e.g. "!Ref sequence". The type of object can be either scalar (for strings and booleans), sequence (for arrays), mapping (for objects).
  • [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 and formatting. These settings can be modified via the corresponding settings inside the [yaml] section in the settings:
    • editor.insertSpaces
    • editor.tabSize
    • editor.quickSuggestions
    • editor.formatOnType
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.

Developer Support

Getting started

  1. Install prerequisites:
  2. Fork and clone this repository and go into the folder
     $ cd vscode-yaml
    
  3. Install the dependencies
    $ npm install
    
  4. Compile the Typescript to Javascript
    $ npm run build
    

Developing the client side

  1. Open the client in vscode
  2. Make changes as neccessary and the run the code using F5

Developing the client and server together

  1. Download both the Yaml Language Server and this VSCode Yaml Client.

  2. Create a project with the directories in the following structure.

ParentFolder/
          ├──── vscode-yaml/
          ├──── yaml-language-server/
  1. Run npm install in both directories to initialize node_modules dependencies.

  2. In vscode-yaml/src/extension.ts set the serverModule variable to:

    serverModule = context.asAbsolutePath(path.join('..', 'yaml-language-server', 'out', 'server', 'src', 'server.js'));
    

    This will redirect which YAML LS to use.

  3. In BOTH directories run:

    npm run compile
    
  4. To run the language server in VSCode, click View -> Debug, then from the drop down menu beside the green arrow select Launch Extension (vscode-yaml), click the arrow, and a new VSCode window should load with the YAML LS running.

  5. To debug the language server in VSCode, from the same drop down menu select Attach (yaml-language-server), and click the green arrow to start. Ensure you've opened a YAML file or else the server would have not yet started.

Note: Disable or remove any existing implementations of the YAML Language server from VSCode or there will be conflicts.

Developing the server side
  1. To develop the language server visit https://github.com/redhat-developer/yaml-language-server

Refer to VS Code documentation on how to run and debug the extension

Installation from Github Release

To obtain and install the latest release from github you can:

  • First download the latest *.vsix file from Github Releases section
  • Inside of VSCode navigate to the extension tab and click the three elipses (...).
  • Click install from VSIX and provide the location of the *.vsix that was downloaded

Contributing

All contributions are welcome!

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].