Posts by Evgeni Chasnovski
Yes, 'mini.deps' has `deps` field. But for `vim.pack` it feels a bit too much: 1) specifying deps should not be done on user's side; 2) they can be listef as "just another plugin"; 3) specifying it several times will work.
The idea is `vim.pack` support for plugin manifest that describes deps.
Nah, my first thought was "It has a cool gradient like effect in this colorscheme". So not entirely "mich nicer" in my opinion :)
@anirudh.fi, to follow up, Neovim 0.12 is out.
FYI: This is either AI generated with confidently wrong claims (like "have to navigate into each directory and `git pull` to update") or human written... with the same confidently wrong claims.
That's a big release with a lot of awesome features. Check it out and update!
It also checks highlighting!
Screenshots are the only way to truly test if the stuff appears on screen the way you expect: like virtual lines/text, statusline/statuscolumn, etc.
My suggestion would also be to still prefer "regular" tests for simple cases (like checking text in a buffer).
This was a surprisingly quick and rewarding side quest. About 72 hours from the idea of a Lua mockup to merging tested C code.
One of the core maintainers @echasnovski.com , and the author of `mini.nvim` just published this superb explainer of vim.pack with a handy migration guide. Incredible post for all Neovim users, worth reading before the upcoming release of @neovim.io 0.12.
echasnovski.com/blog/2026-03...
#neovim
That's too much praise. Thanks 🙏
Glad that you found it useful. I wanted to make using `vim.pack` as understandable as possible. Because it might require some knowledge of how Neovim handles some stuff (runtime files, plugin scripts, plugin packages, etc.).
Tempted by a new Neovim setup? @echasnovski.com MiniMax offers a stable foundation you control from the start.
Not a distro, but a powerful base for your own config. Ideal for new users or those avoiding complex migrations. #Neovim #MiniMax #Vim #Editor #Programming
I am more of a Star Wars person, but thanks for the MiniMax shout out!
I'd encourage to wait a bit (hopefully till April) until 0.12 release and make a more stable config by removing things from it. Like move to built-in plugin manager.
Shameless self plug: nvim-mini.org/MiniMax/
... and it is to put `vim.loader.enable()` as a first line in 'init.lua'. Here are my quick benchmarks:
- 95.6, 94.5, 90.8 milliseconds for 'lazy.nvim' variant. Although config errors.
- 137.0, 138.0, 136.5 for pure `vim.pack` branch.
- 98.8, 108.4, 96.3 with `vim.loader.enable`. Which is not bad.
Thanks, that's really useful!
Quick comparison indeed shows that in both cases there is not a lot (if any) lazy loading. And it *seems* that the overall effect is due to dark magic 'lazy.nvim' does for faster `require`.
Luckily, there is one built into Neovim already...
Is it with the same amount of lazy loading in both configs or with just defaults?
Making some plugins not lazy load when they were before can have this effect. A more detailed comparison of these two startup time logs can help here.
Do you have your config public?
It also comes together with a video demo for visual learners and people who want to see vim.pack in action.
youtu.be/J1r0vrqOMJo
For almost a year developing `vim.pack` (Neovim>=0.12 built-in plugin manager) has been one of my top open source priorities.
With #neovim 0.12 release around the corner, I decided to make a comprehensive guide about how `vim.pack` works and how to use it.
echasnovski.com/blog/2026-03...
Thanks to @bfredl.bsky.social casting his magic, some benchmarks had to be redone to show different (better) performance. So the post has been updated.
TL;DR for those who read the original: there is now no practical difference in performance of using one vs many `vim.pack.add()` calls.
Yeah, code actions is a great way to implement custom operations at cursor.
Btw, if you feel like it, this PR may benefit from your experience: github.com/neovim/neovi...
Maybe even take over it if the author doesn't mind.
With Quarto - relatively straightforward to add with quarto-ext.github.io/bluesky-comm....
Although there is friction when using, as it requires a link to a Bluesky post in a blog post. So it is: post blog -> post Bluesky -> edit blog post with a link for comments.
Didn't find a smoother way :(
MiniMax now uses `vim.pack` on Neovim>=0.12 and usable on Neovim=0.10.
This is a more exciting news than it might look, because it is the first step towards MINI adapting `vim.pack` as the plugin manager. 'mini.deps' will be retired soon-ish after Neovim 0.12 release.
nvim-mini.org/blog/2026-02...
Yeah, backups is a must of course. It's just possible to do it manually in several clicks on Bluesky itself. But it is not the same for generating a rotation key.
I like PDS MOOver and this looks like a perfect opportunity to ask. Is there a plan to add "Generate rotation key" without actual migration? Or is it better to be handled locally with software (in which case a step-by-step guide would go a long way)?
The way I do it is with `vim.schedule(function() ... end)`. When inside config file, it will be executed after first draw.
A more convenient solution is to use `later()` from 'mini.deps'. I also plan to add a more involved function to 'mini.misc', since 'mini.deps' will retire eventually.
By the way, the blog from now on should have comments powered by Bluesky. Answers for Bluesky post above (this one included) should also be shown as comments below blog post.
It is powered by `bluesky-comments` Quarto extension: quarto-ext.github.io/bluesky-comm...
For the longest time I was curious to measure the exact impact of how number of loaded #neovim plugins affects performance.
So I finally did it: echasnovski.com/blog/2026-01...
Yeah... Don't look inside 'mini.pick' :)
But bare in mind that this is a file that contains code+documentation *and* provides the whole autocompletion functionality (LSP suppprt, extra info in a window, signature in a window, and more) in a single file.
Then you might sleep well tonight. After several minutes of watching this :)
I'd quoted the answer there and then, but typing the whole thing was too slow compared to pointing to the timestamp. @linkarzu.bsky.social has very detailed timestamps, which helped here.