Features
The fuchsia.vim script sets up Vim to do the following:
- Set paths so that
:findandgfknow how to find files. - Enable FIDL syntax highlighting (using
/tools/fidl/editors/vim/). - Integrate basic build system so that
:makebuilds 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.