YMMSL Language Support
Download the latest VS Code extension (.vsix)
YMMSL Language Support provides a Language Server Protocol (LSP) server built on top of the validation and consistency checks provided by ymmsl-python.
The server enables IDEs and editors such as VS Code, Emacs, and Neovim to provide inline diagnostics and highlight validation errors directly in YMMSL files.
Installation
Linux executable
On Linux, you can download the latest prebuilt executable:
https://github.com/multiscale/ymmsl-lsp/releases?q=server-
Place the executable under bin/ in the repository root.
Requirements
- glibc >= 2.34
If you use the VS Code extension, the executable is already bundled and ready to use.
Installing with pip, pipx, or uv
You can directly install from this repository, or from PyPi.
As this is a tool it is recommended to use either ´uv tool´ or ´pipx´, after which you will find the executable ymmsl-language-server in /path/to/venv/bin and or have it exposed in your shell.
For example, you could use ´´´ uv tool install ymmsl-lsp ´´´
Usage
The LSP server must be connected to an editor or IDE to be useful.
You can either:
- Install the VS Code extension, or
- Generate configuration files for Emacs and Neovim
Generate editor configurations with:
python scripts/generate_editor_configs.py
Generated files are written to:
editors/generated/
Visual Studio Code
Download the extension from the latest GitHub release.
The VS Code extension and the Python language server are released separately. Extension releases are tagged extension-vX.Y.Z; server releases are tagged server-vX.Y.Z. Every server release also publishes a new extension release containing that server version.
Installation tutorial:
https://www.youtube.com/watch?v=nlHnlmtvjF4
The extension bundles the LSP server and should work out of the box.
If not, you need to install it yourself and set the environment variable ´YMMSL_LSP_PATH´
export YMMSL_LSP_PATH=/path/to/venv/bin/ymmsl-language-server
Emacs
The generated file ymmsl-mode_emacs.el provides YMMSL language support for Emacs.
Quick test
Load the generated mode directly:
emacs -l editors/generated/ymmsl-mode_emacs.el
Alternatively, start Emacs and load the file manually:
M-x load-file
Select:
editors/generated/ymmsl-mode_emacs.el
Permanent installation
Copy or symlink the file into your Emacs configuration and load it from init.el:
(add-to-list 'load-path "/path/to/editors/generated")
(load "ymmsl-mode_emacs")
Emacs package installation tutorial:
https://www.youtube.com/watch?v=at_fACZ_o9Q
Neovim
The generated file ymmsl-nvim.lua provides YMMSL language support for Neovim.
Quick test
nvim -c "source editors/generated/ymmsl-nvim.lua"
Permanent installation
Copy the plugin into Neovim's plugin directory:
mkdir -p ~/.config/nvim/plugin
cp editors/generated/ymmsl-nvim.lua ~/.config/nvim/plugin/
Or create a symbolic link:
mkdir -p ~/.config/nvim/plugin
ln -s $(pwd)/editors/generated/ymmsl-nvim.lua \
~/.config/nvim/plugin/ymmsl-nvim.lua
Neovim will automatically load the plugin on startup.
What is YMMSL_PATH?
The Python validator resolves imported YMMSL modules using the YMMSL_PATH environment variable.
When a YMMSL file imports another module, the validator searches the directories listed in YMMSL_PATH. If an import cannot be resolved, ensure that YMMSL_PATH points to the directory or directories containing the required YMMSL modules.
Example:
export YMMSL_PATH=/path/to/ymmsl/modules
Multiple directories can be specified using a colon-separated list:
export YMMSL_PATH=/path/one:/path/two:/path/three
This works similarly to PATH and PYTHONPATH.
License
Copyright © 2026 Kristoffer Gustafsson
This repository, including its complete commit history, is licensed under the European Union Public Licence (EUPL) v1.2.
See the LICENSE file for the full license text.
Metadata
Release files for ymmsl-lsp 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ymmsl_lsp-0.0.6.tar.gz | 76.0 kB | Without provenance | Details for ymmsl_lsp-0.0.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ymmsl_lsp-0.0.6-py3-none-any.whl | Python 3 | none | any | Details for ymmsl_lsp-0.0.6-py3-none-any.whl |
Total release size: 92.8 kB
Release files / ymmsl_lsp-0.0.6.tar.gz
| Download URL | ymmsl_lsp-0.0.6.tar.gz |
|---|---|
| Size | 76.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f2e1ff219870690766315c955c61bf692377f0b471df4a92272f4e52581f9635
|
|
BLAKE2b-256 checksum How to use checksums |
8ddd77a6ac8824c4d0399cffbc4fb05b6397708b1cc5f4ca8865bf6fa4a0681f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / ymmsl_lsp-0.0.6-py3-none-any.whl
| Download URL | ymmsl_lsp-0.0.6-py3-none-any.whl |
|---|---|
| Size | 16.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
356921d452d2388d12b10f0dcb7c0befbe55b8a9697920aa2b61d752cb9685cf
|
|
BLAKE2b-256 checksum How to use checksums |
95db81d2af96e804254109b02e45ead105a136991bb1c8cce8b201fedd8beb42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for ymmsl-lsp 0.0.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.