← All posts

Language servers: 31 LSP plugins for coding in Singularity

Singularity’s language servers add completion, diagnostics and code navigation to its editor, with 31 servers covering the main languages. The LSP protocol separates the editor from the tool that understands a language: you enable the server you need without configuring the protocol.

Which languages are supported?

AreaServers
WebTypeScript/JavaScript, JSON, HTML, CSS/SCSS/Less, Vue, Svelte, GraphQL
SystemsRust, Go, C/C++, Zig, Swift
ApplicationPython (Pyright and Ruff), Java, Kotlin, C#, PHP, Ruby, Dart, Elixir, Haskell, Lua
Infra and formatsBash, PowerShell, Dockerfile, Terraform, Ansible, YAML, TOML, Markdown

Python and YAML each have two possible servers: registration order determines which one handles a file when extensions overlap.

What does it add to the editor?

Completion as you type or with Ctrl + Space, hover information, signature help, diagnostics, quick actions, inlay hints and the symbol outline. The context menu goes to the definition, type or implementation, finds references, renames and formats. Cmd + T or Ctrl + T searches project symbols.

How do you enable a server day to day?

  1. Open Settings, then LSP, and check that the general integration is active.
  2. Enable the language you want, then open a matching file.
  3. Check the launch mode. An npx entry downloads the pinned version if needed; an on PATH entry requires you to install the server yourself.
  4. Use Update all when the panel reports new versions.
LSP panel in Singularity settings with the list of language servers
LSP panel in Singularity settings with the list of language servers

What are the limits?

A server does not run your program: always validate with the project’s tools. Auto-imports, range formatting, semantic tokens and inline definition preview are not currently available. Servers provided by the PATH update through their usual manager.

Frequently asked questions

Are language servers paid?

No. All 31 language server plugins are free.

Why won’t a server start?

Check the command on the PATH for an on PATH entry, or Node.js, npm and registry access for an npx entry. Logs with the lsp scope show the error.

Can I use Pyright and Ruff together?

Python has both servers, but registration order determines which one handles a file when extensions overlap.

LSP guide · Editor · Download Singularity