Some months ago I wrote about using ALE for navigating through code with help of language servers. That works really well and I was totally satisfied, however I decided to give Neovim a try and in the process I found a plugin that took the game to another level: Coc (Conquer of Completion).
Coc is a completion framework and a language server client. It's fast, responsive and provide full LSP support. I've been using it for a little more than a month and I'm really impressed by its performance.
The only downside I can see so far is the number of dependencies required. Coc requires Node and Yarn to work, besides those I had to install a Neovim python dependency and if you are using Vim it requires a vim-node-rpc
plugin as well. In general I don't like plugins with too many external dependencies, however I feel this time it worths the hassle.
Here are some examples of Coc in action:
Completion The completion prompt has been really fast and responsive so far.
Go to definition
Show references Preview pane on references list is very useful.
Rename I was able to rename variables/methods (and their references) effectively, even in JavaScript.
Show buffer's issues in a list
Check the project repository for a more detailed explanation about the tool as well as some configuration examples.