{% include “docs/development/editors/vscode/_common/_vscode_header.md” %}

Installing extensions

The following VS Code extensions may provide a productive development environment for Fuchsia:

Fuchsia-specific extensions

Fuchsia-specific extensions provide support with custom Fuchsia files.

FIDL Language Support

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

Fuchsia.git Helper{: .external} adds an “Open in...”, which allows you to open a file in OSS Code Search.

To use this extension:

  1. Right click a file in the file editor.
  2. Select Open in OSS Code Search.

FuchsiAware

FuchsiAware{: .external} assists with browsing Fuchsia artifacts, such as by linking from component URLs to component manifests.

zxdb for VS Code

The VS Code zxdb extension{: .external} provides IDE based zxdb debugger support.

General workflow extensions

General workflow extensions provide an overall productive workflow when working with Fuchsia.

GitLens

GitLens{: .external} provides highly customizable insights of git history, which allows you to see code evolution.

GN

GN{: .external} adds syntax highlighting for GN files.

GNFormat

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:

  1. In VS Code, launch Quick Open by running CMD/CTRL + P.
  2. Type settings in the search field.
  3. Click Preferences: Open Settings (JSON).
  4. Add the following configuration and restart VS Code:
"gnformat.path.gn": "{{ '<var>' }}FILE_PATH{{ '</var>' }}",
"gnformat.path.buildtools": "{{ '<var>' }}BUILD_TOOLS_PATH{{ '</var>' }}"

JSON5

JSON5{: .external} adds syntax highlighting for JSON5 files.

Rust-analyzer

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:

Configure workflow

After installing rust-analyzer, modify your VS Code's settings.json file:

  1. Press CMD/CTRL + SHIFT + P to open Command Palette.
  2. Type settings in the search field.
  3. Click Preferences: Open Settings (JSON).
  4. In 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,

Enable rustfmt

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 Fuchisa'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" ],