This repository contains code to generate Language Server Protocol types and classes for various languages.
You will need a python environment to run the generator. Here are the steps:
- Clone this repository.
- Create environment using
python -m venv .venvin the root directory of this project. - Activate the environment using
.venv\Scripts\activateon Windows or.venv/bin/activateon Linux/Mac. - Run this command to install
nox:python -m pip install nox - Run this command to install dependencies:
python -m pip install -r ./packages/python/requirements.txt -r ./requirements.txt
Clone this repository and run generator like a module.
>python -m generator --help
usage: __main__.py [-h] [--schema SCHEMA] [--model MODEL]
Generate types from LSP JSON model.
optional arguments:
-h, --help show this help message and exit
--schema SCHEMA, -s SCHEMA
Path to a model schema file. By default uses packaged
schema.
--model MODEL, -m MODEL
Path to a model JSON file. By default uses packaged
model file.
--plugin PLUGIN, -p PLUGIN
Name of a builtin plugin module. By default uses all
plugins.This project uses nox as a task runner to run the code generator. You can install nox and run build_lsp session to generate code from spec available in the repo.
> python -m pip install nox
> nox --session build_lspYou can format code, run tests, and other tasks using nox as well.
Follow these steps to generate boiler plate code for new plugin:
- Create a virtual environment for python using python 3.7 and activate that environment.
- If you have python extension for VS Code installed then run
Python: Create Environmentcommand. Be sure to select all therequirements.txtfiles in the repo. This should, install all packages needed and select the environment for you.
- If you have python extension for VS Code installed then run
- Ensure
noxis installed.- Run
nox --list, is nox is installed oyu should see a list of available sessions. Otherwise, runpython -m pip install noxfrom the python 3.7 environment you created above.
- Run
- Run
nox --session create_pluginand follow the prompts to create a new plugin.
Example:
> nox --session create_plugin
nox > Running session create_plugin
nox > Creating virtual environment (virtualenv) using python.exe in .nox\create_plugin
Enter the name of the plugin: java
nox > Created plugin java.
nox > Session create_plugin was successful.| Language | Plugin | Package | Notes |
|---|---|---|---|
| Python | generator-plugin.python | Active |