What are null-ls alternatives? 15 new plugins, neogit, neo-tree and lsp-zero updates
Email Newsletter
Sign up with your email address to receive an email when a new issue of This Week in Neovim is available
Introduction
Hello everyone đ
This week we have another summer update from This Week in Neovim with lots of updates!
First I wanted to share a picture by u/the_nameless_nomad posted in this reddit thread. Great post! Glad they had a great time reading Practical Vim, and I hope it gets you all in the summer vibe!
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!
neovim-core">Neovim core
Updates of Neovim itself, which are available on Neovim nightly.
- @neovim on Twitter
- Neovim news
:h news.txt
updates in Neovim directly- PR's on GitHub
News:
- Early WIP/draft PR: add
vim.lsp.server
to create in-process server vim.lsp.start()
now mapsK
to usevim.lsp.buf.hover()
if the server supports it, unless 'keywordprg' was customized before callingvim.lsp.start()
. 33e1a8- Added
nvim_win_text_height()
to get the number of screen lines occupied by a range of text in a given window. db8fe6 vim.wo
can now be double indexed for:setlocal
behaviour. Currently only0
for the buffer index is currently supported. c379d7
Neovim Plugin Community
Neovim is full of active plugins. This section is about the community and what is going on.
new-plugins">
New plugins
creativenullefmls-configs-nvim">creativenull/efmls-configs-nvim
An unofficial collection of linters and formatters configured for efm-langserver to work with the builtin nvim-lsp
Features
- 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
Could efm-langserver with efmls-configs-nvim be a good replacement for null-ls?
Links:
creativenulldiagnosticls-configs-nvim">
creativenull/diagnosticls-configs-nvim
An unofficial collection of different linter and formatter configurations for diagnostic-languageserver used for built-in nvim-lsp
Features:
- 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
Links:
nvimdevguardnvim">
nvimdev/guard.nvim
Async formatting and linting utility for neovim.
Another Neovim plugin by glepnir, and another contented as a replacement for null-ls.
Features
- Blazingly fast
- Async using coroutine and luv spawn
- Builtin support for popular formatters and linters
- Light-weight
Links:
hiphishrainbow-delimitersnvim">
HiPhish/rainbow-delimiters.nvim
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.
tomiis4buffertabsnvim">
tomiis4/BufferTabs.nvim
A simple, fancy tabline for Neovim.
subnutnvim-ghostnvim">
subnut/nvim-ghost.nvim
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).
zeiothcompilernvim">
Zeioth/compiler.nvim
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.
xeromiasmanvim">
xero/miasma.nvim
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.
antonk52lakenvim">
antonk52/lake.nvim
A simplified version of the ocean color scheme with treesitter and lualine support.
gcballesterosnotebooknavigatornvim">
GCBallesteros/NotebookNavigator.nvim
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!
misanthropicbitdeciphernvim">
MisanthropicBit/decipher.nvim
A plugin that provides ways to encode and decode text using various codecs like base64.
kaitlynethyliatreepin">
KaitlynEthylia/TreePin
A lightweight neovim plugin for pinning fragments of code to the screen.
olicalnfnl">
Olical/nfnl
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!
elentokformat-on-savenvim">
elentok/format-on-save.nvim
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.
niuiicdap-utilsnvim">
niuiic/dap-utils.nvim
Utilities to provide a better experience for using nvim-dap
Try this plugin to set up your debugging experience in Neovim!
Links:
updated-plugins">
Updated plugins
massive-update-to-neogit-and-new-home">Massive update to Neogit and new home
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
gitcommit
andgit_rebase
parsers - Telescope Integration
- etc...
Links:
neo-tree-v30-released">
Neo-tree v3.0 released
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!
Links:
lsp-zero-v3-branch-is-ready-for-testing">
lsp-zero v3 branch is ready for testing
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.
Biggest changes:
- 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
.extend_cmp()
Read more in the Reddit post!
Links:
new-home-for-nvim-cokeline">
New home for nvim-cokeline
A Neovim bufferline for people with addictive personalities
nvim-cokeline was recently moved from noib3/cokeline.nvim
to willothy/nvim-cokeline
, make sure to update your config accordingly.
archiving-jose-elias-alvareztypescriptnvim">
Archiving jose-elias-alvarez/typescript.nvim
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!
Links:
what-are-null-ls-alternatives?">
What are null-ls alternatives?
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.server
although this might not be viable for some time - WIP/Draft PR here
You can search for formatting
or 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!
contributing">
Contributing
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: