Another week, another plugin manager for vim...
github.com/wbthomason/packer.n

This one is written in and makes use of newly-added features... but is it worth the time to switch? VimPlug works just fine...

I actually tried out Packer and converted my neovim-only plugins from Plugger to Packer. It's not bad!

Until replaces the classic in most Linux distros, I want my .vimrc to work on both, so I am not going to convert everything to Lua.

And so I ended up with two competing plugin managers in my text editor 😅

Next, after freaking out at coq.nvim's complexity (it needs python3-venv and sqlite), I installed vim-cmp, which is entirely written in , and thus doesn't require compiling:
github.com/hrsh7th/nvim-cmp

One thing I didn't initially understand is that 's built-in LSP client isn't enough to get autocmpletion!

First, you need to configure which Language Server should be spawned for each file type you open. For this, there's nvim-lspconfig, which is maintained by the Neovim devs as a separate project:
github.com/neovim/nvim-lspconf

But wait! The LSP configuration needs to be configured... in Lua, of course! And don't forget to define some mappings for "Go To Definition" etc...

Do we have completion yet? Not so fast!

You see, has builtin completion, but what you really want for programming is *autocompletion*, which requires an external plugin:
github.com/neovim/nvim-lspconf

It says nvim-cmp is the recommended plugin, so it will be easy to integrate, right?

Easy peasy! My nvim-cmp configuration is only... 73 lines of config!

I copy-pasted most of the config, and when it breaks I'm not quite sure how to debug it.

In fact, it's not working right now. If I open a Rust project and start typing, I get plenty of useless snippets instead of the semantic completion. I see rust-analyzer running and eating CPU time... I even see inline errors... so why?

Why do I have to learn before I can code in ?

WHYYYY?!?! 😩

Follow

Hey, it seems I gave up too fast!

My semantic completions were already in the menu, just BELOW the useless snippets...

I guess I just I need to tweak my config to reorder them... and also use TAB to complete (instead of Enter)...

...and also figure out how to theme the menu so I don't get flashes of shocking pink while I'm trying to focus on the code 😂

· · Web · 1 · 0 · 1
@codewiz maybe you already know, but to tweak the order of completions you can use priority or just order sources as you want them. I chose the latter:
https://noa.mornie.org/eriol/ansible-collection-dotfiles/src/branch/main/roles/neovim/files/config/nvim/lua/plugins/nvim-cmp.lua#L47-L56

I also moved recently to neovim (I think about 3 week ago), and I don't know lua (yet!) but I decided to full switch, so my conf is only lua.
@codewiz please feel free to take a look if it can help you:
https://noa.mornie.org/eriol/ansible-collection-dotfiles/src/branch/main/roles/neovim/files/config/nvim

Ignore the ansible layer on top, it's only because I have more than one machine were I want my stuff and all the other systems I tried (from pure git of the HOME to handcrafted Makefile, to home management software) did not worked well at the end.

@eriol Thank you so much for sharing!

In spite of all the sarcasm, I _do_ believe that is on the right path... we need to get rid of the awful VimL and give plugin writers a solid base to work on.

Perhaps better integration will come in time... but we also need the developers to pick good defaults to avoid the paradox of choice.

@eriol Hmm... I already had nvim_lsp as first entry in cmp.config.sources, so it must be something else.

One difference between my configuration and yours is that I used vsnip instead of luasnip. I'll try switching, since I only really care about semantic completion with nvim_lsp at this time.

By the way, your nvim config is *neat*! I can't believe you've been using it nly for 3 weeks.

@eriol Ah, after tweaking the menu appearance to show the completion source, I found out that those snippets were actually coming from rust-analyzer! 🤦

I still need to figure out how to remove them, but that's prograss...

This is how I added the cool icons:
github.com/hrsh7th/nvim-cmp/wi

@eriol Semantic completion in is starting to look and behave reasonably well, but I'm still getting those stupid snippets before the methods...

Also, does LSP support assisted editing for function arguments?

@eriol @srevinsaju I've also hit a bug in lsp-config and reported it to them (their bug report template is quite good!):

github.com/neovim/nvim-lspconf

@eriol @srevinsaju My nvim-lspconfig bug was fixed in just 6 hours... great service, would buy again!

@codewiz maybe I don't get snippets because I don't have a general collection of them, my use case was to have my custom snippet for a new blog entry[¹] it was not too fun to write in the DSL of luasnip...
I will try what happen when I add more snippets and I will tell you, maybe also my conf is broken!

[¹] https://noa.mornie.org/eriol/ansible-collection-dotfiles/src/branch/main/roles/neovim/files/config/nvim/lua/plugins/luasnip.lua#L15-L26
@codewiz for LSP support of function signature, I found this https://github.com/ray-x/lsp_signature.nvim that seems to do what we want but I have not tried it yet.

@eriol It works! (and it took much less configuration than expected)

@codewiz oh, I did not know that rust-analyzer shows also snippets! Thanks for sharing that wiki page I will also tweak my config to show the completion source and icons!
@codewiz thanks I used vim for several years, and I simply tried to keep the new configuration organized as the old one :)
@codewiz I fully agree with you on VimL, and I also hope that we will avoid the paradox of choice. It can be fun configure you editor but maybe you just want to use it!
Maybe as showed by [email protected] the way is to provide ready to go configs... I really don't know.

@eriol @srevinsaju It's the oh-my-zsh way... a pre-baked, well maintained, extensible config with reasonable defaults.

Sign in to participate in the conversation
Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!