What are null-ls alternatives? 15 new plugins, neogit, neo-tree and lsp-zero updates
Hello everyone 👋
This week we have another summer update from This Week in Neovim with lots of updates!
This week we have news from Neovim core, 15 exciting new plugin announcements, several plugin updates, including major updates from neogit, neo-tree and lsp-zero, and we discuss what alternatives exist for null-ls.
Hope you enjoy!
Updates of Neovim itself, which are available on Neovim nightly.
- Early WIP/draft PR: add
vim.lsp.serverto create in-process server
vim.lsp.buf.hover()if the server supports it, unless 'keywordprg' was customized before calling
nvim_win_text_height()to get the number of screen lines occupied by a range of text in a given window. db8fe6
vim.wocan now be double indexed for
:setlocalbehaviour. Currently only
0for the buffer index is currently supported. c379d7
Neovim is full of active plugins. This section is about the community and what is going on.
An unofficial collection of linters and formatters configured for efm-langserver to work with the builtin nvim-lsp
- Out-of-box configurations for 70+ linters & formatters
- Intelligently detect tools installed project-wide or system-wide - works only for node/npm, php/composer and ruby/bundler (additional support for other build tools coming soon)
- Use :checkhealth for a quick diagnostic on tools, to check if tool is available
- Customize configs for your project needs
An unofficial collection of different linter and formatter configurations for diagnostic-languageserver used for built-in nvim-lsp
- Out-of-box configurations for 40+ linters & formatters
- Intelligently detect tools installed project-wide or system-wide - works only for node/npm, php/composer and ruby/bundler, additional support for other build tools coming soon
- Use :checkhealth to see any missing tools
- Customize configs for your project needs
Async formatting and linting utility for neovim.
Another Neovim plugin by glepnir, and another contented as a replacement for null-ls.
- Blazingly fast
- Async using coroutine and luv spawn
- Builtin support for popular formatters and linters
Rainbow delimiters for Neovim with Tree-sitter
This Neovim plugin provides alternating syntax highlighting (“rainbow parentheses”) for Neovim, powered by Tree-sitter. The goal is to have a hackable plugin which allows for different configuration of queries and strategies, both globally and per file type. Users can override and extend the built-in defaults through their own configuration.
This is a fork of nvim-ts-rainbow2, which was implemented as a module for nvim-treesitter. However, since nvim-treesitter deprecated the module system this standalone plugin had to be created.
A simple, fancy tabline for Neovim.
GhostText plugin for Neovim with zero dependencies. Supports neovim running inside WSL! Windows/Linux/macOS supported out-of-the-box! Other OSes need python3.6+ installed)
GhostText is a tool to enable using your text editor to write in the browser. Everything you type in the editor will be instantly updated in the browser (and vice versa).
Neovim compiler for building and running your code without having to configure anything
compiler.nvim supports building and running code for 10 languages, with 4 more on the way. This first stable release has 100% test coverage, has support for
:checkhealth, and support multiple compilation modes.
a fog descends upon your editor ☁ dark color scheme inspired by the woods for vim and neovim
A color scheme for Neovim inspired by the woods, built using lush. supports treesitter, gitsigns, lazy, which-key, telescope, lsp diagnostics, and more.
A simplified version of the ocean color scheme with treesitter and lualine support.
A neovim plugin to navigate and execute code cells
Notebook Navigator lets you manipulate and send code cells to a REPL.
A great feature that comes on by default with VSCode is the ability to define code cells and send them to a REPL like you would do in a Jupyter notebook but without the hassle of notebook files. Notebook Navigator brings you back that functionality and more!
A plugin that provides ways to encode and decode text using various codecs like base64.
A lightweight neovim plugin for pinning fragments of code to the screen.
Enhance your Neovim with Fennel
Enhance your Neovim experience through Fennel with zero overhead. Write Fennel, run Lua, nfnl will not load unless you're actively modifying your Neovim configuration or plugin source code.
- Only loads when working in directories containing a .nfnl.fnl configuration file.
- Automatically compiles *.fnl files to *.lua when you save your changes.
- Can be used for your Neovim configuration or plugins with no special configuration, it just works for both.
- Includes a Clojure inspired standard library (based on Aniseed).
- Compiles your Fennel code and then steps out of the way leaving you with plain Lua that doesn't require nfnl to load in the future.
A streamlined successor to Aniseed!
Automatically formats files when saving using either LSP or shell utilities like prettierd or shfmt
This could be another replacement for the formatting part of null-ls. It restores the cursor of any window showing the current file (useful when editing the same file in a split).
NOTE: This is a work in progress and the API might change.
Utilities to provide a better experience for using nvim-dap
Try this plugin to set up your debugging experience in Neovim!
magit for neovim
NeoGit just merged a huge PR stacked with updates: https://github.com/NeogitOrg/neogit/pull/554. Including 500+ commits, 130 files changed, and 6000+ lines added, 3000+ lines removed
Here are just a couple of the new features:
- Cherry Picking popup
- Reverting popup
- Resetting popup
- Branch configuration popup
- Remotes configuration popup
- Config options added on different popups
- TreeSitter Integration for
- Telescope Integration
Neovim plugin to manage the file system and other tree like structures.
Here are just a couple of the new features in v3.0:
- feat(sources): add follow_current_file.leave_dirs_open option
- fix(icons): replace obsolete Nerd Fonts icons
- docs: fix outdated diagnostics signs info
- docs: add Buffers entry to Nerd Fonts v3 source selector example
- refactor(filesystem): fix recursive expand of nodes
- fix(devicons): let nvim-web-devicons decide the extension
- fix(utils): typo in open split command
- feat(ui/inputs): enable normal mode in rename popup
There are also breaking changes so make sure you read the release notes when upgrading! Check out
:Neotree migrations for help!
The goal for version 3 will be to delete code previously marked as deprecated and remove the
.setup(). The branch is now ready for testing and the plan is to go live with v3 as the new default on September 20.
- lsp-zero will no longer manage the setup of mason.nvim
- to get a minimal working config for nvim-cmp you'll need to call the function
Read more in the Reddit post!
A Neovim bufferline for people with addictive personalities
nvim-cokeline was recently moved from
willothy/nvim-cokeline, make sure to update your config accordingly.
A Lua plugin, written in TypeScript, to write TypeScript (Lua optional).
Just like null-ls, typescript.nvim is being archived. Thank you again Jose, for all your contributions!
There has been several discussions this week about what comes after null-ls, what are the available alternatives?
- What is the solution for null-ls being archived? on Reddit
- null ls alternatives, solutions on Reddit
- Null-ls IS BEING ARCHIVED | Prime Reacts on YouTube
- One of the best Neovim plugins is about to be archived on YouTube
Some options were outlined by folke in this reddit comment. This is a non-comprehensive list on null-ls alternatives and ways forward for the community:
- Someone will fork null-ls and continue maintaining it, it is currently working well so there is no reason to hurry the transition to something new
- Replace with formatter.nvim + nvim-lint
- Replace with efm-langserver + efmls-configs-nvim mentioned earlier in this TWiN issue
- Replace with diagnostic-languageserver + diagnosticls-configs-nvim mentioned earlier in this TWiN issue
- guard.nvim was mentioned earlier in this TWiN issue and also bundles several formatters and linters
- format-on-save.nvim was mentioned earlier in this TWiN issue as a potential alternative for formatting
- Wait for something new based on
vim.lsp.serveralthough this might not be viable for some time - WIP/Draft PR here
You can search for
lsp plugins on Dotfyle by filtering on category on the plugin search page to find even more options.
If you have tried any of these alternatives or another alternative, please share your thoughts on Reddit!
Add your the plugin in either of the following to be featured in This Week in Neovim and Dotfyle:
Contribute to the development of Dotfyle: