Skip to content

Configuration Settings

The following settings are available in VS Code settings (File > Preferences > Settings):

SettingTypeDefaultDescription
zephyr-ide.globalDirectorystring | nullnullRoot directory for west workspace setup, Python venvs, and SDK installations. Replaces the deprecated zephyr-ide.tools_directory.
zephyr-ide.tools_directorystring | nullnullDeprecated. Use zephyr-ide.globalDirectory instead. Migrated automatically on startup.
zephyr-ide.toolchainDirectorystring | nullnullDirectory containing Zephyr SDK installations (e.g. zephyr-sdk-0.17.0 subdirectories). Defaults to toolchains/ inside the global directory.
zephyr-ide.useGuiConfigbooleanfalseUse the graphical Kconfig editor instead of terminal-based menuconfig.
zephyr-ide.westNarrowUpdatebooleanfalsePass --narrow to west update to fetch only required Git history, reducing disk usage and download time.
zephyr-ide.suppressWorkspaceWarningbooleanfalseSuppress the notification about missing ZEPHYR_BASE / ZEPHYR_SDK_INSTALL_DIR environment variables.
zephyr-ide.venvFolderstring | nullnullCustom Python virtual environment path. Defaults to .venv in the workspace setup path.
zephyr-ide.useClangdbooleanfalseUse clangd for IntelliSense instead of the C/C++ extension. When enabled, sets C_Cpp.intelliSenseEngine to disabled and configures clangd.arguments with the Zephyr SDK query-driver. Requires the clangd VS Code extension.

clangd Configuration

When zephyr-ide.useClangd is enabled, the workspace .vscode/settings.json is automatically configured with the appropriate settings — no manual command is needed.

The extension manages up to five clangd.arguments entries (the --query-driver entry is only written when a valid toolchain directory is configured):

{
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.arguments": [
"--compile-commands-dir=${workspaceFolder}/.vscode",
"--background-index",
"--completion-style=detailed",
"--header-insertion=never",
"--query-driver=/path/to/toolchains/**/*"
]
}

The --query-driver glob is derived from your configured toolchain directory (see zephyr-ide.toolchainDirectory), which points to the Zephyr SDK containing the cross-compilers.

User-defined arguments are preserved on enable. If clangd.arguments already contains an argument whose key matches one of the extension’s entries (e.g., a user-customized --completion-style=bundled), the extension leaves that value as-is and does not append its own. You can freely add extra flags (for example --clang-tidy, --pretty, --log=error) — they are kept alongside the extension’s args.

--query-driver is always extension-managed. The extension overwrites any existing --query-driver value to keep it in sync with zephyr-ide.toolchainDirectory. If you want to use a custom toolchain query driver, point zephyr-ide.toolchainDirectory at it instead of editing clangd.arguments directly.

To switch back to the C/C++ extension, disable zephyr-ide.useClangd. If clangd.arguments is exactly the value the extension would write, it is removed entirely; otherwise (you added or modified anything) the array is left alone — assumed to be user-managed. The C_Cpp.intelliSenseEngine workspace override is also cleared.

Next Steps