Gustavo Santos

Neovim Plugin Review - mini.completion

Review of the minimalistic plugin for auto complete code that just works.

mini.completion is a plugin that is very minimal in the configurations. You can configure the delay between changes and the feedback of the plugin to the code changed. You can also configure other visual stuff, but the functionality of the plugin is not configurable.

It will do what needs to be done: offer a suggestion based on the LSP hints and the buffer text. It also imports dependencies if needed.

That’s it.

If you are like me and just need this functionality into the editor, this plugin is perfect.

Some folks that are users of snippets like me in the past, this plugin will not help you. It don’t have any integration with snippet engines like LuaSnip, but for me, it’s fine since that I use GitHub Copilot daily.

Until now, the Copilot is doing a better job than snippet engines, at least for my daily usage and the programming languages that I use (mostly JavaScript and Python). And Copilot plays very well with mini.completion.

What I liked

You know the amount of configuration that you need to have to get the nvim-cmp working with the LSP client and other completions? Forget it.

I don’t have any configuration applied directly to mini.completion, I just defined it and my plugin manager installed it, and it is working fine. It respects the Neovim settings.

Speaking in Neovim settings, these are the settings that I had while I’m writing this text:

vim.opt.completeopt = "menu,noinsert"
vim.opt.pumheight = 12
vim.opt.pumwidth = 50

What I didn’t like

When I append the option preview in the setting vim.opt.completeopt, sometimes the preview window gets stuck on the screen even if the completion window is not displayed.

I don’t know if it’s a bug on mini.completion or Neovim itself. But it’s very rare.

Conclusion

At the time that I’m writing this text, I’m using mini.completion for a whole week during my daily job, and I couldn’t be happy. I’m not missing CoC, I’m enjoying a lot of new stuff that the community has built for Neovim native LSP client.

The performance of the editor is fine, no lag, no sync problems. I didn’t need to restart the language server client. The only problem was with the preview window that I solved by closing and reopening the buffer (I now think that it could be solved by just triggering the window redraw… maybe).