UPDATE: Check “Typescript and ALE” how I have returned to ALE.
Recently I have migrated from Ale + Deoplete + LanguageClient to CoC. I have used first combo for about 6-12 months.
Overall I found CoC to be slightly better. I develop mainly using Typescript so this might not necessary apply to your case.
Here a little things CoC is doing better:
-
I like how CoC shows error. Including the fact that I can press Ctrl-W W to get into error window to copy it (e.g. for Google search).
-
CoC shows not only errors but hints as well from tsserver. Ale is showing only errors (here is pull request for Ale to do this https://github.com/dense-analysis/ale/pull/3362). LanguageClient-neovim shows hints but you can’t navigate them (like in errors/warning in Ale or everything like in CoC).
-
CoC shows colors in CSS by their hex code.
-
CoC offers to fix imports in files on file rename (typescript).
-
Lighter config. It is easier to config CoC only than 3 other plugins.
-
I have not checked this but it is probably that both Ale and LanguageClient launched its own tsserver. That means two runnings servers.
-
I have found CoC plugins quite useful and you can add CoC plugins into your
.vimrc
. E.g like this:let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-emoji', \ 'coc-eslint', \ 'coc-html', \ 'coc-json', \ 'coc-prettier', \ 'coc-python', \ 'coc-tsserver', \ 'coc-explorer', \ 'coc-markdownlint', \ 'coc-vimlsp', \ 'coc-word' \ ]
-
I have not missed any functionality by migrating to CoC.
So overall CoC looks like very good option. Some people complain that it is slower but I have not experienced that.
Alternatively it is possible to use neovim’s default language servers support but I will leave this for the future.