ov-language-server

language-server implementation for openVALIDATION

Usage no npm install needed!

<script type="module">
  import ovLanguageServer from 'https://cdn.skypack.dev/ov-language-server';
</script>

README

openVALIDATION Language Server

npm version coverage

This is a language-server implementation of the domain-specific-language openVALIDATION.

Implemented features of the protocol

  • Jump to declaration
  • Find references
  • Highlight occurrences
  • Code completion
  • Diagnostics reporting
  • Documentation on hover
  • Rename symbol
  • Folding
  • Formatting

Additional features

In addition to the features of the lsp, we provide the following openVALIDATION-specific features.

  • Syntax-Highlighting
  • Generated Code
  • Language-Specific-Definitions

Syntax-Highlighting is currently implemented by tokenizing the whole file and calculate the range for specific tokens. The list of tokens gets automatically send to the client over the notification-method openVALIDATION/semanticHighlighting.

In addition the new generated code gets send to the client over the notification-method openVALIDATION/generatedCode. This always happens, when code gets written and the parser generated new code.

Last but not least the language-server is able to handle changes of the schema-, culture- and language-parameters. This can be done by the client by sending notifications over the methods openVALIDATION/schemaChanged, openVALIDATION/cultureChanged and openVALIDATION/languageChanged. The possible values of these parameters can be seen under the openVALIDATION-documentation.

Providing a dynamic schema

To provide a Schema for openVALIDATION the language-server defines the new openVALIDATION command Use Schema. With this command, you can provide a JSON-Schema by pasting the file path to the command.

For example, the following command refers to a JSON-Schema with a relative path.

Use Schema ./schema.json

It is also possible to use an absolute path instead of a relative. We look forward to supporting more schema types like YAML, but currently, only JSON files can be used.

Getting started

Installing

npm install ov-language-server

Run the language server

node .\node_modules\ov-language-server\dist\start-server.js

Connect to the language server

You can connect to the language server with the url localhost:3010 for example with the monaco-languageclient. You can also specify an own port with the variable PORT.

Clients

The language server is currently not used in a specific client. But stay tuned, we will provide an extension for several editors soon!