arduino-ide/arduino-ide-extension
per1234 54db9bbce8 Sync sketch formatter configuration from source
The Arduino IDE's "Auto Format" feature is configured to produce the standard Arduino sketch formatting style, as
established by the Arduino IDE 1.x formatter.

The configuration is consumed by several other projects which require the configuration in a YAML file. In order to
provide all the consumers with a single canonical source and to locate the infrastructure and activity related to the
maintenance of the file in a more appropriate repository, it is now hosted in a permanent location in the
`arduino/tooling-project-assets` repository.

The following changes have been made to the source configuration:

- Move documentation comments to a dedicated file in the upstream repository
- Make additional non-functional changes to the configuration format to facilitate maintenance
- Update to use the configuration API of ClangFormat 14.0.0

This last item did result in some functional changes to the configuration which will result in minor differences in the
formatter output.

These are actually reversions of unwanted differences from the Arduino IDE 1.x formatter output, which were unavoidable
when using the 11.0.1 version of ClangFormat in use at the time of the configuration's creation. These changes will
provide greater consistency during the migration from Arduino IDE 1.x to 2.x. The default output of the Arduino IDE
1.x formatter will continue to be considered the "gold standard" until Arduino IDE 2.x graduates from "pre-release"
status.

The Arduino IDE 2.x formatter configuration is fully customizable according to the preferences of each user. Those
already using custom configurations will not be affected in any way (though they are encouraged to sync their
configuration files from the source to bring them into compliance with the configuration API of the ClangFormat version
currently in use by Arduino IDE 2.x).

See the documentation and commit history for the source file for details on the configuration changes:

https://github.com/arduino/tooling-project-assets/tree/main/other/clang-format-configuration
2022-08-08 12:48:41 -07:00
..
2021-11-23 17:18:20 +00:00
2022-06-07 13:46:29 +02:00

Arduino IDE Extension

Arduino IDE is based on Theia, and most of its IDE features, UIs and customizations are implemented in this Theia extension.

IDE Services

IDE services typically have a backend part in src/node/ and a front-end part in src/browser/.

Boards Service

The Boards Service continuously checks the computer's ports, in order to detect when you connect or disconnect an Arduino board.

The Boards Manager lists all the known board types, and allows downloading new cores to get additional board types.

Core Service

The Core Service is responsible for building your sketches and uploading them to a board.

Serial Service

The Serial Service allows getting information back from sketches running on your Arduino boards.

Config Service

The Config Service knows about your system, like for example the default sketch locations.

"arduino" configuration in the package.json:

  • "cli":
    • "version" type string | { owner: string, repo: string, commitish?: string }: if the type is a string and is a valid semver, it will get the corresponding released CLI. If the type is string and is a date in YYYYMMDD format, it will get a nightly CLI. If the type is an object, a CLI, build from the sources in the owner/repo will be used. If commitish is not defined, the HEAD of the default branch will be used. In any other cases an error is thrown.

Rebuild gRPC protocol interfaces

  • Some CLI updates can bring changes to the gRPC interfaces, as the API might change. gRPC interfaces can be updated running the command yarn --cwd arduino-ide-extension generate-protocol

Customize Icons

ArduinoIde uses a customized version of FontAwesome. In order to update/replace icons follow the following steps:

  • import the file arduino-icons.json in Icomoon
  • load it
  • edit the icons as needed
  • !! download the new arduino-icons.json file and put it in this repo
  • Click on "Generate Font" in Icomoon, then download
  • place the updated fonts in the src/style/fonts directory