{% 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-tools {{ '<var>' }}FUCHSIA_DIR{{ '</var>' }}/prebuilt/third_party/rust_tools/{{ '<var>' }}HOST_OS{{ '</var>' }}
After configuring rustup, the rust-analyzer extension supports additional configuration with Fuchisa's Rust style guide, rustfmt.toml.
Add the following snippet to your settings.json using the same steps from Configuring workflow:
// use fuchsia-tools toolchain and fuchsia's rules for rustfmt: "rust-analyzer.rustfmt.extraArgs": [ "+fuchsia-tools", "--config-path= {{ '<var>' }}FUCHSIA_DIR{{ '</var>' }}/rustfmt.toml" ],