For VS Code users, each project includes a .vscode folder containing:
launch.json– Debugging configurationstasks.json– Build and firmware upload tasks
For C/C++ development, projects use Clang-based tooling instead of C/C++ IntelliSense. This makes it easier to switch to other IDEs or editors. You can use the two extensions llvm-vs-code-extensions.vscode-clangd and ebextensions.clang-format-2025
We use the latter for formatting (instead of clangd) because clangd ignores .clang-format-ignore files.
ziglang.vscode-zigto get Zig support
llvm-vs-code-extensions.vscode-clangd– A Clangd-based language server for C/C++ with code navigation, linting, and smart completion.
ebextensions.clang-format-2025– For code formatting (preferred over clangd to support.clang-format-ignorefiles).
marus25.cortex-debugfor debugging ARM Cortex-M targets.
actboy168.tasksto got quick shortcut of your tasks in your status bar
Usage:
- **
foxundermoon.shell-formatfor automatically formatting shell scripts and Dockerfile
Configuration example
{
"zig.path": "zig",
"zig.zls.enabled": "on",
"clangd.path": "clangd",
"clangd.arguments": [
"--query-driver=/opt/bin/arm-none-eabi-gcc",
"--header-insertion=never",
"--enable-config",
"-j=8"
],
"[c]": {
"editor.defaultFormatter": "ebextensions.clang-format-2025"
},
"[cpp]": {
"editor.defaultFormatter": "ebextensions.clang-format-2025"
},
"[dockerfile]": {
"editor.defaultFormatter": "foxundermoon.shell-format"
},
"shellformat.flag": "-bn" //Issue with Dockerfile otherwise
}Notes
- The option
--query-driverneed a complete path, the example above was for linux. For windows useC:\tools\xpack-arm-none-eabi-gcc-14.2.1-1.1\bin\arm-none-eabi-gcc - JSON Compilation Database is needed but not ready, See the
README.md






