none-ls.nvim is a Neovim plugin that acts as a language server to inject LSP diagnostics, code actions, and more via Lua.
Neovim's LSP client lacks a native mechanism for non-LSP sources to hook into LSP features, unlike VS Code and coc.nvim. none-ls bridges this gap by allowing pure Lua sources to provide diagnostics, code actions, formatting, hover information, and completion through the LSP protocol. The tool includes built-in sources for each of these features and provides helpers to streamline the process of spawning command-line tools and transforming their output into LSP-friendly formats. This approach reduces boilerplate and improves performance by eliminating the need for external language server processes.
The tool suits developers who want to extend Neovim's LSP capabilities with custom or community-maintained sources without running separate server processes. It works well for those already using Neovim's LSP ecosystem alongside plugins like telescope.nvim and trouble.nvim. The project is in beta status and is developed and tested against the latest stable version of Neovim, with best-effort support for development builds.
The project is community-maintained following the original author's transition away, with an open contribution model where pull requests can make contributors collaborators. The codebase maintains full API compatibility with its predecessor, requiring only a package manager source change for migration. Development follows a collaborative review process where pull requests require review from another collaborator before merging.