Add recommendations for VSCode intellisense (#19402)
This commit is contained in:
parent
d300811009
commit
ec83c0b185
1 changed files with 43 additions and 10 deletions
|
@ -46,16 +46,7 @@ Before starting, you will want to make sure that you have all of the build tools
|
||||||
|
|
||||||
This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly.
|
This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly.
|
||||||
|
|
||||||
### Configuring VS Code
|
#### MSYS2 Setup
|
||||||
|
|
||||||
First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properties.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already.
|
|
||||||
|
|
||||||
Grab [this file](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) and save it. You may need to edit this file, if you didn't install MSYS2 to the default location, or are using WSL/LxSS.
|
|
||||||
|
|
||||||
Once you have saved this file, you will need to reload VS Code, if it was already running.
|
|
||||||
|
|
||||||
?> You should see an `extensions.json` and `settings.json` file in the `.vscode` folder, as well.
|
|
||||||
|
|
||||||
|
|
||||||
Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window.
|
Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window.
|
||||||
|
|
||||||
|
@ -110,8 +101,50 @@ This installs a bunch of Git related tools that may make using Git with QMK Firm
|
||||||
Restart once you've installed any extensions
|
Restart once you've installed any extensions
|
||||||
|
|
||||||
# Configure VS Code for QMK
|
# Configure VS Code for QMK
|
||||||
|
|
||||||
1. Click <kbd><kbd>File</kbd> > <kbd>Open Folder</kbd></kbd>
|
1. Click <kbd><kbd>File</kbd> > <kbd>Open Folder</kbd></kbd>
|
||||||
2. Open the QMK Firmware folder that you cloned from GitHub.
|
2. Open the QMK Firmware folder that you cloned from GitHub.
|
||||||
3. Click <kbd><kbd>File</kbd> > <kbd>Save Workspace As...</kbd></kbd>
|
3. Click <kbd><kbd>File</kbd> > <kbd>Save Workspace As...</kbd></kbd>
|
||||||
|
|
||||||
|
## Configuring VS Code
|
||||||
|
|
||||||
|
Using the [standard `compile_commands.json` database](https://clang.llvm.org/docs/JSONCompilationDatabase.html), we can get VS code C/C++ extension to use the exact same includes and defines used for your keyboard and keymap.
|
||||||
|
|
||||||
|
1. Run `qmk generate-compilation-database -kb <keyboard> -km <keymap>` to generate the `compile_commands.json`.
|
||||||
|
1. Create `.vscode/c_cpp_properties.json` with the following content:
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "qmk",
|
||||||
|
"compilerArgs": ["-mmcu=atmega32u4"],
|
||||||
|
"compilerPath": "/usr/bin/avr-gcc",
|
||||||
|
"cStandard": "gnu11",
|
||||||
|
"cppStandard": "gnu++14",
|
||||||
|
"compileCommands": "${workspaceFolder}/compile_commands.json",
|
||||||
|
"intelliSenseMode": "linux-gcc-arm",
|
||||||
|
"browse": {
|
||||||
|
"path": [
|
||||||
|
"${workspaceFolder}"
|
||||||
|
],
|
||||||
|
"limitSymbolsToIncludedHeaders": true,
|
||||||
|
"databaseFilename": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Change values in `.vscode/c_cpp_properties.json` for your environment:
|
||||||
|
|
||||||
|
1. Copy the `-mmcu` argument from `compile_commands.json` into your `compilerArgs`. This is to work around a [bug in vscode c/c++ extension](https://github.com/microsoft/vscode-cpptools/issues/6478).
|
||||||
|
1. Use the `compilerPath` from `compile_commands.json`.
|
||||||
|
1. Modify `cStandard`, `cppStandard` and `intelliSenseMode` values to the correct values for your platform. See [this section](https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference#_configuration-properties) for reference. For WSL, it should still be gcc-x64.
|
||||||
|
|
||||||
And now you're ready to code QMK Firmware in VS Code
|
And now you're ready to code QMK Firmware in VS Code
|
||||||
|
|
||||||
|
|
||||||
|
## Troubleshooting VSCode C/C++ extension
|
||||||
|
|
||||||
|
If the defines are not matching what you expect, open the source code and run action `C/C++: Log Diagnostics`. This will list the exact list of defines and include paths defined in `compile_commands.json`, and if it's not part of your compilation database, it will tell you so.
|
Loading…
Reference in a new issue