This VS Code extension does not provide any functionality but a bridge between the Arduino IDE and external tools implemented as a VS Code extension. Please reference arduino/arduino-ide#58 to see why this VSIX has been created.
Consume the ArduinoContext extension API in your VS Code extension:
import * as vscode from 'vscode';
import type { ArduinoContext } from 'vscode-arduino-api';
export function activate(context: vscode.ExtensionContext) {
const context: ArduinoContext = vscode.extensions.getExtension(
'dankeboy36.vscode-arduino-api'
)?.exports;
if (!context) {
// Failed to load the Arduino API.
return;
}
// Use the Arduino API in your VS Code extension.
// Read the state.
// Register a command to access the sketch path and show it as an information message.
context.subscriptions.push(
vscode.commands.registerCommand('myExtension.showSketchPath', () => {
vscode.window.showInformationMessage(
`Sketch path: ${context.sketchPath}`
);
})
);
// Listen on state change.
// Register a listener to show the FQBN of the currently selected board as an information message.
context.onDidChangeSketch((event) => {
if (event.changedProperties.includes('board')) {
vscode.window.showInformationMessage(
`FQBN: ${event.object.board?.fqbn}`
);
}
});
}
Extension Settings
This extension contributes the following settings:
arduinoAPI.log: set to true to enable logging of state updates. It's false by default.
arduinoAPI.compareBeforeUpdate: set to true to relax the state update. If true, a value will be updated when the new value and the current value are not deepStrictEqual.
FAQs
Q: What does ⚠️ @alpha mean?
A: This API is in an alpha state and might change. The initial idea of this project was to establish a bare minimum layer and help Arduino IDE tool developers start with something. I make breaking changes only when necessary, keep it backward compatible, or provide a migration guide in the future. Please prepare for breaking changes.
Q: Why do I have to install vscode-arduino-api from npm.
A: vscode-arduino-api only contains types for the API. The actual code will be part of the VS Code extension.