AUTOVIM / 0.1.0-ALPHA

Languages & LSP

Language servers, toolchains, diagnostics, completion, and snippets.

Editor integration and external tools

Neovim's native LSP client handles communication with language servers. Mason installs servers explicitly; nvim-cmp combines server completions with file paths and buffer words. Tree-sitter supplies buffer-level syntax highlighting independently of a language server.

You supply compilers, runtimes, and project dependencies. AutoVim's server installer does not replace language toolchains. Opening a file never starts a server download. Dashboard, picker, terminal, and tool buffers stay outside LSP attachment.

Languages and prerequisites

LanguageInstall name / pinned versionTools you provide
C / C++clangd / 23.1.0Compiler and build tools.
Assemblyasm_lsp / 0.10.1Rust/Cargo to build the server; your assembler.
Javajdtls / v1.62.0JDK 21+; Python 3.9+ for the launcher.
Pythonpyright / 1.1.414Node.js/npm and the Python project environment.
HTMLhtml / 4.10.0Node.js/npm.
CSS / SCSS / Lesscssls / 4.10.0Node.js/npm.
JS / TS / JSX / TSXts_ls / 6.0.2Node.js 22.22.2+ and npm.
Rustrust_analyzer / 2026-10-19Rust/Cargo; rust-src for standard-library analysis.
Gogopls / v0.23.0A Go toolchain compatible with that server version.
Zigzls / 0.16.1A matching Zig toolchain.
Nimnim_langserver / v1.16.0Nim, nimsuggest, and Nimble for dependencies.

These are the pins in the alpha archive, not a claim that every language has been validated against every toolchain. See validation scope. Upstream requirements: jdtls and TypeScript server.

Installing servers

Install the prerequisite toolchains and restart Neovim to inherit their PATH. Then request the servers you need:

:LspInstall clangd
:LspInstall nim_langserver
" Install every configured server whose installer prerequisites are available:
:LspInstall all

With no argument, :LspInstall chooses the current file's server. Missing installer prerequisites skip the affected package and produce a message. :Mason shows progress; :MasonLog shows failures. Use :LspStart after installation if the file was already open.

Server pins live in lsp/servers.lua. The Mason registry snapshot is pinned to 2026-10-20-stark-key in lsp/installer.lua. Existing servers on PATH also work; their versions are managed by you.

Project roots and environments

Servers look for language build markers inside the explicit workspace boundary. Without an assigned workspace, AutoVim falls back through language markers, Git, and the file's directory. These roots never reassign the editor workspace.

  • Files in one language project share a server process; different roots get separate clients.
  • C/C++ needs compile_commands.json or compile_flags.txt for accurate include paths, defines, and target flags.
  • Java uses a unique metadata directory per project.
  • Python prefers project .venv/ or venv/, then the active VIRTUAL_ENV.
  • Assembly can use .asm-lsp.toml for instruction-set and assembler choices.
  • Nim delegates analysis to nimsuggest.

Diagnostics and navigation

Attached editing buffers receive definition, declaration, reference, implementation, type-definition, hover, signature, rename, code-action, formatting, diagnostic, and symbol-search mappings. A server must support an action to perform it.

Diagnostics use severity signs, underlines, and virtual text. Hover, signature help, and completion use bordered windows in the shared palette. Find all mappings in the key and command reference.

:LspInfo
:LspStart
:LspRestart

:LspInfo shows availability, missing runtimes, and attached roots. Restarting a server reattaches its affected buffers. Formatting uses the attached server where supported; no separate formatter stack is installed.

Completion and snippets

Completion loads on Insert mode for editing buffers. Suggestions combine LSP, paths, and buffer words; buffer-word suggestions start after three characters. Nothing is selected automatically.

KeyBehaviour
Tab / Shift-TabNext / previous item in a visible completion menu.
EnterAccept the selected item; otherwise insert a newline.
Ctrl-SpaceRequest suggestions.
Ctrl-N / Ctrl-PNext / previous completion item.
Ctrl-ECancel completion.
Ctrl-B / Ctrl-FScroll completion documentation up / down.

With the menu closed, Tab first jumps to the next active snippet field. Otherwise it requests suggestions after non-whitespace text, or keeps indentation at the beginning of a line or after whitespace. Shift-Tab returns to the previous snippet field when available; snippet navigation also works in Select mode.

If no menu is visible: press Tab to open it, Tab again to select a suggestion, then Enter to accept.

AutoVim · By Félix0.1.0 alpha · Debian 13 Trixie