Hi! Glad you like ElixirLS!
Some people seem to have gotten ElixirLS working in neovim, though the plugin system for neovim seems complicated and I haven’t gotten it working myself. Someone using it in neovim just posted their vimrc in an issue (now resolved), which is here in case it’s helpful: https://github.com/JakeBecker/elixir-ls/issues/76
I’m not up to date on the progress of the LanguageClient-neovim plugin, but based on your description and issues people have filed on ElixirLS, there’s a couple areas where its support for the protocol is incomplete:
- The client should send the configuration (which in VS Code is specified in
settings.json) via the
workspace/didChangeConfigurationrequest, but according to this issue the Neovim client doesn’t do that yet, so there’s no way to specify these settings. (EDIT: Actually, it looks like it does support this, though you might need to turn on a setting for it? Looks like it was added here.)
- The autocomplete snippet syntax is specified here as part of the Language Server Protocol. When the server first starts up, the client sends an
initializerequest to the server which includes a parameter for
clientCapabilities, and if the client doesn’t support snippets, it should set
false. I assume Neovim omits this, so ElixirLS defaults to including the snippets.
Hope that helps!
PS. The Vim emulation plugin for VS Code is pretty good, and I haven’t missed Vim since I switched to using VS Code. By complete coincidence, the Vim plugin for VS Code was written by a former roommate of mine.