A Neovim plugin that uses Lua to inject LSP diagnostics, code actions, formatting, and more, acting as an in-memory language server.
none-ls.nvim (formerly null-ls.nvim) is a community-maintained Neovim plugin that bridges the gap between Neovim's LSP client and non-LSP tools. It allows developers to leverage Neovim's built-in LSP features—like diagnostics, code actions, formatting, hover, and completion—using pure Lua, eliminating the need for external language server processes. The project aims to reduce boilerplate and improve the Neovim LSP experience by enabling pure Lua sources to hook into LSP features.
Neovim users who want to integrate non-LSP command-line tools (like linters, formatters, and spell checkers) directly into Neovim's native LSP ecosystem. It's particularly useful for developers who prefer a pure Lua, in-memory solution over external language server processes.
Developers choose none-ls.nvim because it runs entirely in-memory with pure Lua for faster performance compared to external solutions, and it provides seamless integration with Neovim's native LSP client and popular LSP-related plugins like telescope.nvim and trouble.nvim. It also offers helpers to easily create custom sources from CLI outputs.
null-ls.nvim reloaded / Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Runs entirely in-memory with pure Lua, aiming for faster performance by eliminating external language server processes, as stated in the Key Features.
Injects diagnostics, code actions, formatting, hover, and completion directly into Neovim's LSP client, enabling non-LSP tools to work with plugins like telescope.nvim.
Provides helpers like null_ls.generator to easily spawn CLI processes and transform output into LSP-compatible formats, as shown in the markdownlint example.
Includes ready-to-use sources for various languages and tools, reducing initial setup time and fostering contributions, per the Built-in Sources section.
The project is explicitly in beta status, meaning features may be unstable, support for Neovim HEAD is best-effort, and breaking changes could occur.
Setting up sources requires Lua knowledge and CLI tool understanding, with debugging involving manual log inspection, as noted in the FAQ for enabling debug mode.
Only bridges non-LSP utilities; it lacks advanced LSP capabilities like semantic highlighting or deep code analysis, making it insufficient for languages with full server support.