IDE Setup
Contents (7)
Lus has an official extension for VSCode-based editors and a stdio language server that can be integrated into any editor with LSP support.
VSCode-based editors#
The Lus extension provides syntax highlighting, diagnostics, code completion, hover information, go-to-definition, references, formatting, and more. It bundles a WASM build of Lus and therefore does not require a local installation of the language to work.
VSCodium, Cursor, and Antigravity#
Search for Lus in the extensions panel and install it directly.
Visual Studio Code#
Microsoft’s VSCode uses the Visual Studio Marketplace by default, which does not host the Lus extension. You will need to install it manually:
- Download the latest
.vsixfile from the Open VSX page. - Open VSCode, go to the Extensions panel, click the
...menu, and select Install from VSIX…. - Select the downloaded
.vsixfile.
Alternatively, install from the command line (replace version with the version of the downloaded extension):
code --install-extension lus-version.vsix
Each example below requires a local installation of
lusand the source code’s repository cloned as to accesslus-language.
Neovim#
With nvim-lspconfig:
vim.api.nvim_create_autocmd("FileType", {
pattern = "lus",
callback = function()
vim.lsp.start({
name = "lus",
cmd = { "lus", "/path/to/lus-language/main.lus" },
root_dir = vim.fs.dirname(
vim.fs.find({ ".git" }, { upward = true })[1]
),
})
end,
})
Helix#
In languages.toml:
[[language]]
name = "lus"
scope = "source.lus"
file-types = ["lus"]
language-servers = ["lus-language"]
[language-server.lus-language]
command = "lus"
args = ["/path/to/lus-language/main.lus"]
Sublime Text#
With LSP for Sublime Text:
{
"clients": {
"lus": {
"enabled": true,
"command": ["lus", "/path/to/lus-language/main.lus"],
"selector": "source.lus"
}
}
}
Emacs#
With lsp-mode:
(with-eval-after-load 'lsp-mode
(add-to-list 'lsp-language-id-configuration '(lus-mode . "lus"))
(lsp-register-client
(make-lsp-client
:new-connection (lsp-stdio-connection '("lus" "/path/to/lus-language/main.lus"))
:activation-fn (lsp-activate-on "lus")
:server-id 'lus-language)))