One thing I didn't initially understand is that #Neovim'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:
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 #Rust completion yet? Not so fast!
You see, #Neovim has builtin completion, but what you really want for programming is *autocompletion*, which requires an external plugin:
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 #Lua 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?
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 😂
@eriol Thank you so much for sharing!
In spite of all the sarcasm, I _do_ believe that #neovim 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:
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!