Disclaimer: the beginning of this third edition of TWiN requires a small disclaimer about licensing. From the very first commit in TWiN and the first commit in the contents repository, all the work has been licensed BSD-3 New Clause. It was brought to my attention that even though that license is fine for code, it does not really apply to prose content.
For this reason, all the contributions made to the contents repository are licensed CC-BY-SA-4.0. You can find the license here.
And now, let’s get a full batch of Neovim news!
Neovim Core updates
Updates of Neovim itself, which are available on Neovim nightly.
Nothing much this week… 🤷
Neovim Plugin Community updates
Neovim is full of active plugins. This section is about the community and what is going on.
This week, @tjdevries teaches you how to use Lua autocmds to test your project on save.
With the storm of awesome Lua plugins, there is one thing that most plugin authors don’t consider is :help docs.
Which is understandable, as help docs are tedious to write. So, why not auto-generate your plugin’s help doc
from emmylua. Using
you can autogenerate help for lua API docs, create custom section, table-of-contents and more.
@stevearc shows us how to use their plugin to run commands on save!
@numToStr writes about their personal experience from going from CoC (a very famous completion framework for Vim and Neovim, which now can do lots of things like managing extensions, implementing an LSP client, etc. etc.) to the native Neovim LSP. A chill read to look back on how we used to deal with code intelligence between the era of the native LSP.
This week, we have a new plugin and it’s about system clipboards!
nvim-osc52 uses the ANSI OSC52 sequence to copy
directly into your system clipboard, wherever you are (local machine, remote, etc.). The way it works is by writing what
you want to copy to the system clipboard into Neovim’s
stderr stream. When the OSC52 sequence is read by your terminal,
it does the job to copy that content to your system clipboard.
The main advantage of this is being able to copy text whatever your
pty is (so it works through SSH!).
A plugin written by @barreiroleo, providing external LTeX file handling (off-spec LSP) and other functions.
A new plugin to perform conversions between epoch timestamps, by @hlucco. If you work a lot with different epoch timestamps, that might be a very interesting plugin to try out! (Yes, I’m looking at you, cryptocurrency developers, with your crazy epochs).
@lukas-reineke made a new plugin this week:
cbfmt. That plugin allows to format embedded codeblocks inside Markdown
and Org documents. It’s not a plugin per-se — it’s a CLI tool — but it was worth mentioning it there.
A plugin by @smolovk to create and manage multiple sub-configs for projects. It currently has two commands: one to
load a configuration, and one to edit it. The plugin stores the configurations in
stdpath('data') — which is most of
the time in
A module of mini.nvim (by @echasnovski) for extending and creating
i textobjects (like in
va"). It enhances some built-in textobjects (like
and more), creates new ones (like
a?, and more), and allows users to create their own.
v:count, different search methods, consecutive application, and customization via Lua
patterns or functions. The plugin has built-ins for brackets, quotes, function calls, arguments, tasg, user
prompts, and any punctuation / digit / whitespace character.
This is a plugin that is doing something a bit different than the plugins we announced in TWiN lately. According to its author, @Pocco81, it “de-clutters NeoVim’s UI to enhance your coding experience”. The plugin provides four main features, implemented as modes:
- Ataraxis: good ol’ zen mode.
- Minimalist: disable ui components (e.g. numbers, tabline, statusline).
- Narrow: narrow a text region for better focus.
- Focus: focus the current window.
Clearly a plugin to try out!
The plugin now has a public API module.
Add support for
The plugin got a couple of changes:
- Comment generator.
if err != nilgenerator.
- Add setup support.
lsp-zerois a plugin that handles the configuration of
nvim-cmp, so you don’t have to. The goal is to be able to start using the built-in LSP client quickly with minimal configuration (three lines of configuration is the minimal needed).
lsp-zero.nvim just got support for mason.nvim.
lab.nvim now supports TypeScript, Python and Lua. The initial discussion started in
this Reddit thread, if you
That new release also adds support for quick data, a way to insert data into your buffer quickly by randomizing it (automatically insert email addresses, people names, cities, etc.).
nvim-docker received a huge update. @dgrbrady announced on Reddit the feature list part of the update:
- Bring a container up with the u key.
- Bring a container down with the d key.
- Restart a container with the r key.
- Delete a container by pressing dd.
- Tail a container’s logs by pressing t.
- Focus the log popup by pressing tab.
- Toggle whether the cursor should stick to the bottom of the log popup by pressing t while inside the log popup.
- Focus the main popup by pressing shift-tab.
Lots of internal cleanups and improvements as well.
The plugin now allows for adding mapping descriptions.
hop.nvimis a motion plugin written by @phaazon made to move anywhere in the buffers with as few keystrokes as possible. It was made to replace EasyMotion in the context of Neovim and its API (using virtual text, etc.) and be extensible and full-featured.
This week, it’s a patch version release (
hop-v2.0.2). This update is all about fixing bugs, among:
- Fix “col value outside range” error, which occurred when trying to hop at the very beginning or very last of a line / empty line with some special combination of options.
ctrl-cequivalent to escin
- Fix pending operation column increment so that we can correctly use f / t and F / T in operator-pending modes.
Want to contribute?
You have noticed something missing that you saw lately? Do not keep the candies for yourself and please feel free to share with us! You can open a PR at This Week In Neovim Contents.
Feel free to read how to contribute to get started.