SaaSHub helps you find the best software and product alternatives Learn more →
Top 23 Lua Lsp Projects
-
It's documented here (with migration steps):
https://github.com/neovim/nvim-lspconfig#important-%EF%B8%8F
and in a pinned issue.
and nvim-lspconfig :help has a migration guide:
https://github.com/neovim/nvim-lspconfig/blob/16812abf0e8d81...
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
kanagawa.nvim
NeoVim dark colorscheme inspired by the colors of the famous painting by Katsushika Hokusai.
-
-
-
-
-
none-ls.nvim
null-ls.nvim reloaded / Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
-
rustaceanvim
🦀 Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim
- It's not at the top level namespace, it's usually in the `vim.g` or `vim.b` namespace. There's no more namespacing than with a Lua module + function.
- global configuration variables don't have to be tables. They can be a union of `table | fun():table`, which enables laziness. [rustaceanvim does this, for example](https://github.com/mrcjkb/rustaceanvim/blob/12504405821c0587...).
- lazy.nvim's heuristics to auto-detect and invoke `setup` functions and pass "config objects" are a hack that could just as easily have been implemented around global config variables. This is a symptom of the problem, not a solution.
- If you don't need any code to require the plugin, there's also no need to keep the configuration and the code to require it in the same place.
- If a plugin is implemented correctly (by not making lazy loading the responsibility of the user), there's no need to worry about the user setting the global variable before the plugin is loaded.
- Most plugins' `setup` functions are idempotent. If you want to provide the ability to reconfigure your plugin at runtime, you can provide a `reload(opts)` function that sets the global config variable and then reinitialises the plugin. Or, you could add a metatable to the config variable that triggers a reload if the plugin has already been initialised. There's hardly ever a valid reason to force the coupling of configuration and initialisation on your plugin's users.
-
-
-
-
-
-
-
To install follow the instructions here: And you should be good to go!
-
-
-
lsp-status.nvim
Utility functions for getting diagnostic status and progress messages from LSP servers, for use in the Neovim statusline
-
-
Lua Lsp discussion
Lua Lsp related posts
-
Neovim + Java LSP on a Play Framework sbt Project — The Missing Guide
-
Add TailwindCSS IntelliSense and Prettier Plugin Support for TS/JS Files
-
Flutter Android setup on Arch Linux
-
Show HN: Daily-notes.nvim – fuzzy time journal and planning plugin
-
Hassle free flutter Development in Hyprland with Neovim
-
[SOLVED] Vue 3 + TypeScript + Inlay Hint support in NeoVim
-
A Missing IDE Feature
-
A note from our sponsor - SaaSHub
www.saashub.com | 7 Jun 2026
Index
What are some of the best open-source Lsp projects in Lua? This list will help you:
| # | Project | Stars |
|---|---|---|
| 1 | nvim-lspconfig | 13,701 |
| 2 | kanagawa.nvim | 6,182 |
| 3 | lua-language-server | 4,276 |
| 4 | lsp-zero.nvim | 3,985 |
| 5 | mason-lspconfig.nvim | 3,903 |
| 6 | lspsaga.nvim | 3,790 |
| 7 | none-ls.nvim | 3,233 |
| 8 | rustaceanvim | 3,008 |
| 9 | nvim-ufo | 2,922 |
| 10 | lsp_signature.nvim | 2,354 |
| 11 | aerial.nvim | 2,294 |
| 12 | vim-config | 1,970 |
| 13 | lspkind.nvim | 1,686 |
| 14 | nvim-navic | 1,661 |
| 15 | dropbar.nvim | 1,565 |
| 16 | navigator.lua | 1,397 |
| 17 | flutter-tools.nvim | 1,393 |
| 18 | outline.nvim | 1,010 |
| 19 | SchemaStore.nvim | 1,006 |
| 20 | nvim-navbuddy | 883 |
| 21 | lsp-status.nvim | 657 |
| 22 | wtf.nvim | 603 |
| 23 | haskell-tools.nvim | 597 |