Smarter Chromium GN in Vim with gn-language-server
GN Language Server for Chromium development was announced on chromium-dev. It’s very easy to install in VSCode, NeoVim or Emacs. But how can we configure it with classic Vim + YCM?
Setup
First, install the language server with Cargo.
cargo install --locked gn-language-server
Then, add this to your vimrc.
let g:ycm_language_server = [
\ {
\ 'name': 'gn',
\ 'cmdline': [ 'gn-language-server' ],
\ 'filetypes': [ 'gn' ],
\ }
\ ]
That easy, right?
What’s Working
Hover Documentation

Go To Imports

Go To Dependencies

Current Limitations
The following features are not working yet. They may need more configuration or further work:
Code Folding
Classic Vim and YCM don’t support LSP-based folding, and I’m not a big fan of that feature anyway. But you can configure another plugin that supports LSP-based folding, or simply rely on indent-based folding.
Go To Definition
When I try to go to the definition of template, I get an error KeyError:
'uri'. I’m not sure whether this is caused by my local configuration, but it
needs further investigation.
