Editor setup
sysml-rs toolingstatus: pre-alpha
You want diagnostics, completion, hover, and navigation while you edit
.sysml and .kerml files in VS Code. That comes from two pieces: the
sysml-lsp-server language server (a Rust binary) and a thin
client extension that launches it. This page covers the VS Code setup;
for the server as an interface in its own right — its capabilities, generic
LSP clients like Helix or Neovim, and the WebSocket bridge — see
the language server.
Before you start
Section titled “Before you start”The extension is not published to the VS Code Marketplace or Open VSX.
Install it from the .vsix attached to the
latest release —
one per platform, each with the language server bundled — or build it from a
source checkout.
# Linux x86-64; substitute your platform's asset namecurl -L -O https://github.com/RickyMillar/sysml-rs/releases/latest/download/sysml-linux-x64-0.1.0.vsixcode --install-extension sysml-linux-x64-0.1.0.vsixThe published packages are sysml-{linux-x64,linux-arm64,darwin-arm64,darwin-x64,win32-x64}-0.1.0.vsix.
They carry the extension’s own version (0.1.0), which is not the release tag —
check the release you downloaded from rather than the filename.
To build both from source instead, follow the
installation guide first so that cargo
builds work in your clone.
VS Code
Section titled “VS Code”1. Build the language server
Section titled “1. Build the language server”cargo build --release -p sysml-lsp-serverThe binary lands at target/release/sysml-lsp-server.
2. Package and install the extension
Section titled “2. Package and install the extension”The extension lives in editors/vscode. Packaging it produces a .vsix you
install into your normal VS Code:
cd editors/vscodenpm cinpm run package # runs vsce; produces sysml-0.1.0.vsixcode --install-extension sysml-0.1.0.vsixIf a server binary is present at editors/vscode/server/sysml-lsp-server
when you package, it is bundled into the VSIX and the extension uses it
automatically. Otherwise, point the extension at the binary you built in
step 1 with the sysml.server.path setting (or put sysml-lsp-server on
your PATH).
Continuous integration packages the same per-platform VSIXes (Linux x64/arm64,
macOS arm64/x64, Windows x64) with the server bundled, via
.github/workflows/vscode-extension.yml; a tagged build attaches them to the
GitHub Release, which is where the packages above come from.
3. Check it works
Section titled “3. Check it works”Open a folder containing .sysml files. You should see syntax highlighting
immediately and, once the server has indexed the workspace, squiggles for
real diagnostics and working hover/completion. The SysML: Show Output
command opens the server log if something looks wrong.
How the extension finds the server
Section titled “How the extension finds the server”In priority order:
- the
sysml.server.pathsetting, - a bundled
server/binary inside the installed extension, sysml-lsp-serveron the systemPATH,- the SysML: Install/Update Language Server command, which downloads a prebuilt server from GitHub releases. Releases now publish those server binaries, so this path is live for Linux x64/arm64, macOS arm64/x64, and Windows x64.
Useful settings
Section titled “Useful settings”All settings are under the SysML section (sysml.*):
| Setting | Default | What it does |
|---|---|---|
sysml.server.path |
(empty) | Explicit path to sysml-lsp-server; empty means auto-detect. |
sysml.server.trace |
off |
LSP wire tracing (messages, verbose) in the Output channel. |
sysml.library.enabled |
true |
Load the SysML v2 standard library on startup. |
sysml.validation.enabled |
true |
Semantic validation (constraint and type checking). |
sysml.inlayHints.enabled |
true |
Inlay hints for inferred types and multiplicities. |
sysml.formatting.enabled |
true |
Document formatting. |
sysml.workspace.maxIndexFiles |
500 |
Cap on indexed workspace files (0 = unlimited). |
What you get
Section titled “What you get”Everything the language server provides — diagnostics as you type, semantic highlighting on top of the extension’s TextMate grammars, completion, hover, navigation, rename, formatting, code actions, and inlay hints. The full capability list, checked against the server’s live initialize response, is on the language server page.
The extension additionally ships snippets for common SysML/KerML constructs
and JSON-schema validation for .project.json / .workspace.json /
.meta.json manifests.
Experimental / partial support — the extension is deliberately thin right now: the diagram webview, simulation panels, and debug adapter were removed during the renderer rework and will return with the new React-SVG renderer. Diagrams are available today through the CLI export and the embeddable viewer, and model execution through the CLI and runtime.
Other editors
Section titled “Other editors”sysml-lsp-server is a standard LSP server, so any editor with an LSP
client — Neovim, Helix, Emacs, Zed, and the rest — can use it directly.
Invocation, a worked client configuration, and the WebSocket bridge are on
the language server page.