{% include “docs/development/editors/vscode/_common/_vscode_header.md” %}
The following VS Code extensions may provide a productive development environment for Fuchsia:
Fuchsia-specific extensions provide support with custom Fuchsia files.
FIDL Language Support{: .external} provides syntax support and LSP-based language features in FIDL.
Note: You need to configure Fuchsia environment variables to run this extension. For more information, see Set up environment variables.
Fuchsia.git Helper{: .external} adds an “Open in...”, which allows you to open a file in OSS Code Search.
To use this extension:
FuchsiAware{: .external} assists with browsing Fuchsia artifacts, such as by linking from component URLs to component manifests.
General workflow extensions provide an overall productive workflow when working with Fuchsia.
GitLens{: .external} provides highly customizable insights of git history, which allows you to see code evolution.
GN{: .external} adds syntax highlighting for GN files.
GNFormat{: .external} provides GN file formatting.
You may need to configure GNFormat with the file path to your GN binary and buildtools. Do the following:
CMD/CTRL + P
.settings
in the search field."gnformat.path.gn": "{{ '<var>' }}FILE_PATH{{ '</var>' }}", "gnformat.path.buildtools": "{{ '<var>' }}BUILD_TOOLS_PATH{{ '</var>' }}"
JSON5{: .external} adds syntax highlighting for JSON5 files.
Rust-analyzer{: .external} is a Language Server Protocol{: .external} (LSP) implementation for the Rust language.
Note: If your Fuchsia source is symlinked from another mountpoint, the rust-analyzer
extension may not locate the files for analysis. Instead, open the actual file path to the Fuchsia source in VS Code.
To use rust-analyzer
with VS Code, Fuchsia recommends:
After installing rust-analyzer
, modify your VS Code's settings.json
file:
CMD/CTRL + SHIFT + P
to open Command Palette.settings
in the search field.settings.json
, paste the following snippets:Note: If you use VS Code's remote workspaces, use the settings.json
for your remote environment.
// disable cargo check on save "rust-analyzer.checkOnSave.enable": false, "rust-analyzer.checkOnSave.allTargets": false,
Additionally, you may want to configure smaller tooltips and hide parameter hints to optimize your workspace:
// optional: only show summary docs for functions (keeps tooltips small) "rust-analyzer.callInfo.full": false, // optional: don't activate parameterHints automatically "editor.parameterHints.enabled": false,
The rust-analyzer
extension relies on the rustup
installer to invoke rustfmt
, a tool for formatting Rust code according to style guidelines.
To configure rustup
with your Fuchsia source code, run:
Note: HOST_OS
is linux-x64
on Linux and mac-x64
on macOS.
rustup toolchain link fuchsia {{ '<var>' }}FUCHSIA_DIR{{ '</var>' }}/prebuilt/third_party/rust/{{ '<var>' }}HOST_OS{{ '</var>' }}
After configuring rustup
, the rust-analyzer
extension supports additional configuration with Fuchsia's Rust style guide, rustfmt.toml
.
Add the following snippet to your settings.json
using the same steps from Configuring workflow:
// use fuchsia toolchain and fuchsia's rules for rustfmt: "rust-analyzer.rustfmt.extraArgs": [ "+fuchsia", "--config-path= {{ '<var>' }}FUCHSIA_DIR{{ '</var>' }}/rustfmt.toml" ],