ESC
Type to search...
S
Soli Docs

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 SoliInstall.

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 soli binary must be in your PATH
  • Editor files should use the .sl extension
  • For project root detection, include a soli.toml file in your project

Next Steps