Editor Integration
Set up Soli language support in your favorite editor. Full LSP features including autocomplete, hover docs, and real-time linting.
Zero Configuration Required
Install the extension and it just works. The LSP server starts automatically when you open a .sl file.
Cursor & VS Code
The Cursor and VS Code extensions provide the full Soli language experience with LSP support.
Installation
Install from the .vsix package:
cd editors/vscode
vsce package
# Then install .vsix in your editor
Settings
Customize in settings.json:
{
"soli.lsp.enable": true,
"soli.lint.onSave": true
}
Available LSP Features
hover
Documentation for functions, classes, and builtins
completion
Keywords, types, and local symbols
definition
Jump to symbol definitions
references
Find all uses of a symbol
documentSymbol
Outline view of your code
foldingRange
Fold classes and functions
inlayHint
Inline type annotations
codeAction
Quick fixes for lint violations
formatting
Format entire document
Nova (macOS)
The Nova extension lives under editors/nova/soli.novaextension/ and uses Nova's LanguageClient API to spawn soli lsp on stdio.
Install from source
Build and install the soli binary so the LSP backend is available, then symlink the extension into Nova's extensions directory:
cargo install --path .
ln -s "$PWD/editors/nova/soli.novaextension" \
"$HOME/Library/Application Support/Nova/Extensions/com.solilang.soli.novaextension"
Restart Nova and open any .sl file — diagnostics, hover, and completion should activate within a second.
Install from the Extension Library
Once published, just open Nova → Extensions → search Soli → Install.
Settings
Configure via Nova → Preferences → Extensions → Soli:
| Setting | Description |
|---|---|
soli.lsp.enabled |
Toggle the language server. Off falls back to grammar-only highlighting. |
soli.lsp.path |
Absolute path to soli. Leave blank to use PATH. |
soli.lsp.trace |
LSP trace verbosity (off / messages / verbose). |
Heads up: Nova doesn't inherit your shell's full PATH. If the server doesn't start, set Soli > Soli binary to the absolute path of soli (for example, /Users/you/.cargo/bin/soli) and run Editor → Extensions → Restart Soli Language Server.
Neovim
Neovim has built-in LSP support. Configure using lspconfig:
-- ~/.config/nvim/lua/lsp/soli.lua
local lspconfig = require('lspconfig')
lspconfig.soli.setup({
cmd = {"soli", "lsp"},
filetypes = {"soli"},
root_dir = function(filename)
return lspconfig.util.root_pattern("soli.toml", ".git")(filename)
end,
settings = {
soli = {}
},
capabilities = require('cmp_nvim_lsp').default_capabilities(),
})
Or without lspconfig (Neovim 0.10+):
vim.lsp.config('soli', {
cmd = {"soli", "lsp"},
filetypes = {"soli"},
root_markers = {"soli.toml"},
})
vim.lsp.enable('soli')
Other Editors
Any editor that supports the Language Server Protocol can use Soli's LSP server.
{
"name": "soli",
"command": "soli lsp",
"filetypes": ["soli"],
"rootPatterns": ["soli.toml"],
"languageId": "soli"
}
Requirements
- The
solibinary must be in your PATH - Editor files should use the
.slextension - For project root detection, include a
soli.tomlfile in your project