minimal-format.nvim

 cljoly/minimal-format.nvim A simple & powerful formatting plugin that extends neovim just a little bit to automatically format your code. Native: uses the formatprg setting, the setting used by the gq mapping in default vim. Safe: Doesn’t replace your code with garbage if the formatting command fails (unlike gq) Applies the minimum difference required to the buffer. This means that the whole buffer won’t be changed and marks and external marks (used e....

Luasnip and Treesitter for Smarter Snippets

TL;DR A context-aware snippet for Go error handling code, returning the right types, with the default values. Demo Snippet Introduction Golang’s error handling is notoriously verbose. It was also the top pain point in the Go Developer Survey Q2 2022. Numerous proposals to simplify error handling have been written, but at the time of writing, none have been accepted. So we have to live with the current state of things. It’s ok, Neovim with Treesitter has a good “understanding” of code, so we can use it to generate the error handling code....

August 30, 2023 · 10 min

Generating Snippets with LuaSnip in Neovim

TL;DR When you have many variations of the same snippet, one option is to generate those with Lua code. The complete example is at the end. I’ve recently moved to LuaSnip as my snippets plugin for Neovim. When I first started, I sticked to the simplest features of LuaSnip, in particular the SnipMate-like syntax for snippets. But I have now started to explore the more distinctive features of LuaSnip, like Lua-defined snippets....

July 31, 2022 · 4 min

From UltiSnips to LuaSnip

TL;DR LuaSnip is fast and doesn’t have to be complicated. Give it a try! Even if that article shows how LuaSnip shines, I have great respect for the work that has gone into UltiSnips. It is still a reliable, reasonably fast plugin given the constraint it operates in (in particular, Vim compatibility requires a fair amount of Vimscript). I’ve written this article shortly after trying LuaSnip and I’m still very much evaluating it....

May 15, 2022 · 7 min

bepo.nvim

 cljoly/bepo.nvim Mappings for the bepo layout in Lua, inspired by vim-bepo It aims to be faster (takes only 0.4ms at startup on my machine, while vim-bepo requires 1.6ms) and more customizable (see :help bepo.nvim-cherry-pick) Example Use You should call the extension early in your config, so that you can erase mappings later (or with later extensions) more easily. require("bepo").setup() You can also apply only some mapping groups: require("bepo").movement() require("bepo").tabs() require("bepo")....

Local NeoVim Plugin Development

2023-05-20: Updated to account for the features of NeoVim 0.9 and obsolete plugins You have found a (Neo)Vim plugin that you want to fiddle with, either to contribute changes upstream or for your own use. Sounds familiar? Here are some tips and tricks I use for my NeoVim plugin development. The aim of these small tricks is to iterate faster on changes, by loading your changes in a live NeoVim instance as quickly as possible....

November 2, 2021 · 3 min

telescope-repo.nvim

 cljoly/telescope-repo.nvim telescope-repo is an extension for telescope.nvim that searches the filesystem for git (or other SCM1, like Pijul, Mercurial…) repositories. It does not require any setup: the list of repositories is built on the fly over your whole $HOME, you don’t need to manually add projects or open some folders to populate this list, as opposed to telescope-project.nvim or project.nvim. Finding the repositories with “telescope” in their name, with the README in the panel on the top:...

How I Got Started with NeoVim’s Lua Configuration

Four months ago I was still using SpaceVim when I stumbled upon a blog post on how to configure NeoVim with Lua. I then started to create my own configuration. In this post I’ll share the learnings acquired in the process. I hope you will find this useful to create your own configuration! Why create your own Vim config from scratch? Vim has been my daily driver for about ten years....

July 18, 2021 · 9 min