0.17.0
Notable features in this release
Autocomplete for #include (#802)
If you type a " or < after the #include keyword, you will get suggestions for header files that you can include. The suggestions are computed based on your "browse.path" and "includePath".
- NOTE: We don't inspect
"compileCommands"to provide the information for this feature yet.
Configuration Improvements (#1338)
Better support for system include paths if "compilerPath" is set
If you set the "compilerPath" property in your c_cpp_properties.json configurations, you no longer need to manually add the system include paths or defines to the configurations. We will implicitly add them to "includePath", "defines", and "browse.path" for you. In other words, we will not write them to c_cpp_properties.json, but the language server will use them.
Better support for "compilerPath" on Windows (#1845, #1736)
In c_cpp_properties.json you can directly address your WSL compiler by using the linux path and we will discover the system include path for you. If you have multiple distros installed, we pick the one marked as Default when you run wslconfig.exe /l
For example:
{
"name": "WSL",
"compilerPath": "/usr/bin/gcc",
...
}
We also detect Cygwin now and will transform the system include path the compiler provides to one that Windows understands.
Setting default values for configuration properties (#368, #410, #1229, #1270, #1404)
New settings have been added to the extension that allow you to set defaults for all of the properties in c_cpp_properties.json configs so that you don't have to set the same values over and over if most of your projects have similar configurations.
Support for WSL on Windows builds 17110 and higher (#1694)
Starting with Windows build 17110, case-sensitive folders were turned on for WSL installations by default. The extension has been updated to work with case-sensitive files on Windows when a WSL configuration is detected.
Recursive includePath syntax (#897)
You can now use recursive paths when configuring IntelliSense. Using two asterisks ** at the end of a path instructs the extension to do a recursive search for includes starting from that folder:
"includePath": "${workspaceFolder}/**"
We are still working on optimizations to improve the experience in large projects with hundreds of folders, but initial support is available in this release (as a result, the IntelliSense features may take longer to be available after opening/editing a file, i.e. the red flame). Also, newly added folders with headers are not picked up until the workspace is reloaded.
Code snippets
We have added a few code snippets to the extension. They will show up in the auto-complete list as you are writing code and they can be used to insert boilerplate code for common tasks like declaring a class, writing a for loop, etc.
Vcpkg integration
Vcpkg is a cross-platform package manager for C++. We will automatically add Vcpkg's header download location to the include path for opened folders that have not generated a c_cpp_properties.json configuration file yet.
Updated Visual Studio Windows Debugger
Updated the "cppvsdbg" used (i.e. when compiling with cl.exe).
We also fixed the following issues: #1559, #1577, #1771, #1782, #1783, #1790, #1819, #1873, #1890