VS Code WPILib
This repository contains the WPILib VS Code extension, along with the standalone electron project that contains some of the functionality of the extension.
Build Dependencies
- Node JS - Tested with Node 8.
- Java - Tested with Java 17
- VS Code - For development/debugging.
- TS Lint Extension
- Chrome Debug Extension
- In order to debug the extension, you will need the extension dependencies for the extension. The Microsoft C++ extension and the Java extension pack.
Setting up Dependencies
In order to properly build, there is some setup that needs to occur.
- Go into
vscode-wpilib
and runnpm install
- Go into into
wpilib-utility-standalone
and runnpm install
- From the root, run
./gradlew updateAllDependencies
. This will grab the templates and examples from WPILib, and move the shared dependencies from the vscode extension to the standalone utility. This command will need to be reran any time you update the shared dependencies in the vscode project. - Open the root folder in VS Code.
Building and Debugging
Once you have the project open in VS Code, there are 5 debugging targets set up.
Extension
Will launch the extension to debugExtension Tests
Will launch the extension testsStandalone: Main
Will launch the standalone project. The debugger will be attached to the host processStandalone: Renderer
Will attach to the standalone projects renderer processStandalone: All
Will launch the standalone project, and attach to the renderer. This will attach 2 separate debuggers.
In addition, each project has a compile
and a lint
npm command. These will compile and lint their respective projects. Please run these before submitting any PR, as CI will check these. In addition, VS Code's lint does not detect the same lint errors as running lint manually would.
Testing
We highly recommend you do any testing by launching in the debugger. Unlike Eclipse, local building is not required to update WPILib versions, so building files to install is not exactly a simple setup. We will be posting instructions for this later, but not currently.
Warning about shared dependencies.
Because of limitiations in typescript, we cannot easily have a shared library that works in both the vscode extension and the standalone utility. Because VS Code is the primary platform, the files are stored in that folder. Anything in the following folder is considered shared.
vscode-wpilib/shared
vscode-wpilib/riolog/shared
In these, any updates from the the standalone project will not be see in the vscode project, nor will they get committed to git. Please edit these files in the VS Code extension to apply changes.