This is a language-server implementation of the domain-specific-language openVALIDATION.
- Jump to declaration
- Find references
- Highlight occurrences
- Code completion
- Diagnostics reporting
- Documentation on hover
- Rename symbol
- Folding
- Formatting
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.
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.
npm install ov-language-server
node .\node_modules\ov-language-server\dist\start-server.js
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
.
The language server is currently not used in a specific client. But stay tuned, we will provide an extension for several editors soon!