Files
David 'Digit' Turner 0e7d98e041 Add collect_validations_metadata boolean flag to generated_file() targets.
The default is false, unless the .gn flag
experimental_collect_validations_metadata is set to true.

When this flag is true, metadata walks will visit validation
dependencies. This may result in runtime crashes due to the
data race described in the associated bug.

A future CL will ensure that walks that include validations
are always performed after all targets have been resolved
to fix the issue.

Bug: 566346002
Change-Id: I12a8d913aa3895de8ec991b3a491c45e41b0cbfa
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/27085
Reviewed-by: Takuto Ikuta <tikuta@google.com>
Commit-Queue: David Turner <digit@google.com>
2026-10-01 06:16:15 -07:00
..
2020-02-04 00:55:31 +00:00

GN vim syntax plugin

Installation with a plugin manager

You can use modern plugin managers to download the GN repo and manage the vim plugin:

Example config for vim-plug:

Plug 'https://gn.googlesource.com/gn', { 'rtp': 'misc/vim' }

Or, for Vundle users:

Plugin 'https://gn.googlesource.com/gn', { 'rtp': 'misc/vim' }

Manual installation

If you don't use a plugin manager or would prefer to manage the GN repo yourself, you can add this explicitly to rtp in your .vimrc:

set runtimepath+=/path/to/gn/misc/vim
" ...
filetype plugin indent on " or a similar command to turn on filetypes in vim

Formatting GN files

vim-codefmt supports the GN filetype natively. Add the following to your .vimrc:

" Install vim-codefmt and its dependencies
Plug 'google/vim-maktaba'
Plug 'google/vim-codefmt'

" Install this plugin:
Plug 'https://gn.googlesource.com/gn', { 'rtp': 'misc/vim' }

" Optional: configure vim-codefmt to autoformat upon saving the buffer.
augroup CodeFmt
  autocmd!
  autocmd FileType gn AutoFormatBuffer gn
  " Other file types...
augroup END

This will autoformat your files every time you save. If you prefer not to format files upon saving, vim-codefmt can format the buffer by calling :FormatCode.

Included format integration

If you cannot include vim-codefmt, you can use the limited gn format integration included in this plugin. Add the following to your .vimrc:

" Replace <F1> with whichever hotkey you prefer:
nnoremap <silent> <F1> :pyxf <path-to-this-plugin>/gn-format.py<CR>