Features
The fuchsia.vim
script sets up Vim to do the
following:
- Set paths so that
:find
andgf
know how to find files. - Enable FIDL syntax highlighting (using
/tools/fidl/editors/vim/
). - Integrate basic build system so that
:make
builds and populates the QuickFix window. - Configure YouCompleteMe (YCM) to provide error checking, code completion, and source navigation within the Fuchsia tree.
Installation
The steps are:
- Update your login script.
- Run the fx set command.
- Update your Vim startup file.
- Restart Vim to configure YouCompleteMe.
- Build a compilation database.
Update your login script
Add the following line to your startup script (typically ~/.bashrc
):
export FUCHSIA_DIR=<your_fuchsia_source_directory>
Run the fx set command
This command uses the format fx set [PRODUCT].[BOARD]
. For example:
fx set core.x64
Update your Vim startup file
If the following line exists in your ~/.vimrc
file, remove it:
filetype plugin indent on
Then add the following lines to your ~/.vimrc
:
if $FUCHSIA_DIR != ""
source $FUCHSIA_DIR/scripts/vim/fuchsia.vim
endif
filetype plugin indent on
Restart Vim to configure YouCompleteMe
To configure YouCompleteMe (YCM), you need to source the
fuchsia.vim
file.
Restart your Vim to run the source $FUCHSIA_DIR/scripts/vim/fuchsia.vim
command in your ~/.vimrc
file (see
Update your Vim startup file).
To verify that your YCM works, place the cursor on an identifier in a .cc
or
.h
file in Vim, then hit Ctrl+]
to navigate to the definition of the
identifier.
Auto-formatting
Google's vim-codefmt can auto-format code on save. This can be installed using a package manager such as Vundle or vim-plug.
A plugin to format and syntax-highlight GN files is available
separately. The
following example .vimrc
demonstrates how to turn on auto-formatting of GN
files using vim-plug and Fuchsia's prebuilt GN:
call plug#begin('~/.vim/plugged')
Plug 'google/vim-maktaba'
Plug 'google/vim-glaive'
Plug 'google/vim-codefmt'
Plug 'https://gn.googlesource.com/gn', { 'rtp': 'misc/vim' }
call plug#end()
call glaive#Install()
" Set gn path to the Fuchsia prebuilt.
let g:gn_path = systemlist('source ' . g:fuchsia_dir . '/tools/devshell/lib/vars.sh && echo $PREBUILT_GN')[0]
execute ':Glaive codefmt gn_executable="' . g:gn_path . '"'
augroup autoformat_gn
autocmd!
autocmd FileType gn AutoFormatBuffer gn
augroup END
For highlighting Rust, see its language-specific guide.