blob: 67658cf9177723d83c145e708b6298a5b5c06af6 [file] [log] [blame] [view] [edit]
# Editors for developing Fuchsia
Fuchsia recommends that you use an IDE (integrated development environment)
to develop Fuchsia and to build software on Fuchsia. An IDE consolidates
multiple tools in a single GUI to help you develop.
## VS Code {#vs-code}
To get started with VS Code, install [VS Code][vs-code-download]{: .external}.
### Configuration
Once you have installed VS Code, you should configure the IDE. Depending on
your development setup, consider the following guides:
* [Configuring remote workspaces][remote-workspaces]: This guide is recommended
if you are developing on a virtual machine, container, or an environment with
a running SSH server.
* [Configuring file reloading][file-reloading]: This guide is recommended if
you are developing Fuchsia in the source tree. As Fuchsia has a large code
base, you may want to exclude some directories from being watched for file
changes.
### fuchsia.code-workspace
This file in the root directory of fuchsia.git contains recommended configuration
defaults for using VS Code on Fuchsia. If you use this workspace file (either
with `File > Open Workspace from File` or opening the file in an editor pane
and clicking the `Open Workspace` button that pops up) it will prompt you to
install some recommended extensions if you don't already have them, and it
will set configuration options that are useful or necessary to use those
extensions on Fuchsia.
Note that these settings override ones in your user configuration, if you'd
like to edit the values set in `fuchsia.code-workpace` you'll have to put them
in the [workspace-folder settings][settings-precedence] in
`fuchsia/.vscode/settings.json`.
### Extensions
VS Code supports a large amount of extensions which can help you customize
your IDE. Fuchsia has developed several extensions that are specific for
developing the Fuchsia platform and for developing on Fuchsia with the SDK.
* [Fuchsia extension for VS Code][fuchsia-dev-ext]: This extension integrates key
Fuchsia-specific functionality into VS Code such as connecting, debugging,
analyzing logs for Fuchsia devices, and functionality to help you edit and
debug code as you develop for Fuchsia.
* [Additional Fuchsia extensions][fuchsia-source-ext]: This guide lists
additional Fuchsia extensions that may help you as you contribute to
Fuchsia.
## Other editors
These guides describe configurations and best practices of other editors and IDE
configurations for Fuchsia development.
### YouCompleteMe integration
[YouCompleteMe](http://ycm-core.github.io/YouCompleteMe/) is a semantic
code-completion engine. YouCompleteMe works natively with Vim but it can also be
integrated with other editors through [ycmd](https://github.com/Valloric/ycmd).
For installation and usage information see [YouCompleteMe integration][youcompleteme-editor]
### Vim configuration
The [`fuchsia.vim`](/scripts/vim/fuchsia.vim) script sets up Vim to do the
following:
* Set paths so that `:find` and `gf` 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][youcompleteme-editor] (YCM)
to provide error checking, code completion, and source navigation within the
Fuchsia tree.
For installation and usage information see [Vim tools for Fuchsia development][vim-editor]
### Sublime Text Configuration
Each language may have extra configuration. See more for
* [Rust][rust-sublime]
* [FIDL][FIDL-sublime]
### Kakoune configuration
For installation and usage information see
[Kakoune for Fuchsia development][#kakoune].
[vs-code-download]: https://code.visualstudio.com/docs/setup/setup-overview
[settings-precedence]: https://code.visualstudio.com/docs/getstarted/settings#_settings-precedence
[remote-workspaces]: /docs/reference/tools/editors/vscode/remote-workspaces.md
[file-reloading]: /docs/reference/tools/editors/vscode/file-reloading.md
[sdk-fundamentals]: /docs/get-started/sdk/learn/README.md
[source-fundamentals]: /docs/get-started/learn/README.md
[fuchsia-dev-ext]: /docs/reference/tools/editors/vscode/fuchsia-ext-install.md
[ffx-ref]: https://fuchsia.dev/reference/tools/sdk/ffx
[fuchsia-source-ext]: /docs/reference/tools/editors/vscode/extensions.md
[rust-sublime]: /docs/development/languages/rust/editors.md#sublime-text
[FIDL-sublime]: /docs/development/languages/fidl/guides/editors.md#sublime
[vim-editor]: /docs/reference/tools/editors/vim.md
[youcompleteme-editor]: /docs/reference/tools/editors/youcompleteme.md
[kakoune]: /docs/reference/tools/editors/kak.md