/textX-LS

Language server for domain specific languages based on textX

Primary LanguageTypeScriptMIT LicenseMIT

textX-LS

Build Status MIT licensed

textX-LS is a language server that provides smartness for all domain specific languages based on textX.

This repository consists of two python packages:

and a Visual Studio Code extension:

⚠️ This project got a new maintainer

After several years of inactivity this project is in a transition to a new maintainer. Please see this announcement.

Required textX Generator Plugins

Building a custom VS Code extension for newly registered language is delegated to the textx-vscode generator which uses textx-coloring to produce a syntax highlighting Textmate file.

Features

  • language project registration/unregistration (editable mode is supported)
  • languages and generators preview
  • language VS Code extension generation and installation
  • model and meta-model validations
  • default syntax highlighting
  • live-reload on grammar changes (editable mode)
  • configure and run generators
  • language project scaffolding
  • optional environment configuration
  • code completion
  • jump to definition
  • find all references
  • configurable syntax highlighting
  • code folding
  • symbols tree view
  • viewX integration

Development Setup

This project requires python 3.6 and node v10.16 for development.

Installation steps:

  1. python -m venv env && source env/bin/activate
  2. pip install -r requirements.txt
  3. cd client && npm i

To register pre-commit hooks, run: pre-commit install To run pre-commit hooks manually: pre-commit run --all-files

Running the extension in VS Code:

In order to run the extension, client directory must be added as a workspace folder or opened as a root project.

Now, switch to debug view, choose Server + Client option and press F5.

A new VS Code window should be opened in examples directory.

CI/CD and Artifacts

Take a look at build process.

License

MIT

Legend

  • textX language project is a python package that registers one or more languages using a textX registration API

  • textX generator project is a python package that registers one or more generators using a textX registration API