Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Neovim
  3. none-ls.nvim

none-ls.nvim

UnlicenseLua

A Neovim plugin that uses Lua to inject LSP diagnostics, code actions, formatting, and more, acting as an in-memory language server.

GitHubGitHub
3.2k stars122 forks0 contributors

What is none-ls.nvim?

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.

Target Audience

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.

Value Proposition

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.

Overview

null-ls.nvim reloaded / Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.

Use Cases

Best For

  • Injecting diagnostics from CLI linters (like eslint or markdownlint) into Neovim's LSP diagnostic system.
  • Using Neovim's built-in formatting commands (vim.lsp.buf.format) with external code formatters (like stylua).
  • Adding custom code actions or hover information via pure Lua without running a separate language server.
  • Integrating spell-check completion directly into Neovim's LSP completion menu.
  • Creating project-specific LSP sources that parse buffer content or CLI output without external dependencies.
  • Combining multiple non-LSP tools (diagnostics, formatting, completion) into a unified LSP interface within Neovim.

Not Ideal For

  • Users who want out-of-the-box, zero-configuration LSP servers for languages with official LSP support (like TypeScript or Python).
  • Projects requiring advanced LSP features such as semantic code intelligence, cross-file refactoring, or real-time collaboration that full LSP servers provide.
  • Teams with strict production stability needs, as the project is in beta and may have undocumented bugs or breaking changes.
  • Environments where minimizing plugin dependencies is critical, since it requires plenary.nvim and manual setup for each tool.

Pros & Cons

Pros

Pure Lua Performance

Runs entirely in-memory with pure Lua, aiming for faster performance by eliminating external language server processes, as stated in the Key Features.

Seamless LSP Integration

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.

Extensible Custom Sources

Provides helpers like null_ls.generator to easily spawn CLI processes and transform output into LSP-compatible formats, as shown in the markdownlint example.

Community-Driven Built-ins

Includes ready-to-use sources for various languages and tools, reducing initial setup time and fostering contributions, per the Built-in Sources section.

Cons

Beta Stability Risks

The project is explicitly in beta status, meaning features may be unstable, support for Neovim HEAD is best-effort, and breaking changes could occur.

Configuration Complexity

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.

Limited to Non-LSP Tools

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.

Frequently Asked Questions

Quick Stats

Stars3,246
Forks122
Contributors0
Open Issues10
Last commit1 month ago
CreatedSince 2023

Tags

#formatting#developer-tools#editor-integration#neovim-lsp#neovim-plugin#lsp-client#code-quality#neovim#lua#code-actions#lsp#diagnostics

Built With

N
Neovim
p
plenary.nvim
L
Lua

Included in

Neovim20.6k
Auto-fetched 19 hours ago

Related Projects

nvim-lspconfignvim-lspconfig

Quickstart configs for Nvim LSP

Stars13,807
Forks2,471
Last commit1 day ago
lspsaga.nvimlspsaga.nvim

improve neovim lsp experience

Stars3,793
Forks304
Last commit8 days ago
rustaceanvimrustaceanvim

🦀 Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim

Stars3,051
Forks131
Last commit22 hours ago
nvim-lintnvim-lint

Mirror of: https://codeberg.org/mfussenegger/nvim-lint An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.

Stars2,762
Forks310
Last commit29 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub