You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add IntelliSense for C++20 modules importing #6302
See the previous Windows/cl.exe-only issue at #6290 (UPDATE: the issue was deleted, see #8256 (comment) ).
NOTE: C++20 modules importing works for cl.exe if you set /ifcSearchDir (and possibly other modules args if necessary); however the IntelliSense support is still in active development so there are lots of known issues/bugs still.
This is dependent on IntelliSense parser changes from VS (i.e. open file Linux solutions in VS don't have module importing support for IntelliSense either).
Christ-Jan Wijtmans (@cjwijtmans) It may work with msvc mode with .ifc files for cl.exe, but it's not officialy supported yet. We process /headerUnit, /ifcSearchDir, /reference, and /stdIfcDir in compilerArgs.
Richard Natal (@Bigous) It's not officially supported, but we do have code that processes various modules command lines. Can you provide the command line args you're using in compilerArgs, particularly those that are modules-related?
be cautious as there are only a handful of giant commits. This thing spawned out of nowhere.
If its real, great job. But exercise caution as it doesn't look like a typical project to me in the way it is managed.
I am a C++ Modules enthusiast, mcppls is built using the mcpp build tool. and mcppls have a tiny ci matrix for it, feel free to try it out (or as a temporary transitional solution), and please provide feedback if you encounter any problems.
SPeak (@Sunrisepeak) so any plan to submit a PR for this feature (in 2026 bug) on this repo?
If you don’t have the time or interest, we could submit a PR using your source code instead—though I think it would be better if you were the one to submit it.
SPeak (@Sunrisepeak) so any plan to submit a PR for this feature (in 2026 bug) on this repo?
If you don’t have the time or interest, we could submit a PR using your source code instead—though I think it would be better if you were the one to submit it.
A PR won't help here: the IntelliSense engine is a closed-source EDG binary(#6302 (comment)), and this repo is mostly the TS extension. As a temporary transitional solution, use a separate language server with "C_Cpp.intelliSenseEngine": "disabled". Options: mcppls, or clice (nearing stable).
I have to wonder why MS doesn't just advise Copilot to do the job and fix this.
Don't they trust their own product, or would the token cost be too high?
:-)
Reacted by Marco Mariotto, stayhydated, ProgramGamer, Daniil and Craig Hamel
This issue decaying into a discussion rather than being an issue tracker, I'll just leave this here for whoever wants a solution today without jumping through hoops. Here's a minimal setup with clangd that works today with Clang/libc++, GCC/libstdc++, MSVC/MS-STL with CMake, all in VSCode. (Clang/MS-STL doesn't, but it's a Clang issue, not clangd specifically.)
Happy C++23 coding, just disable cpptools lannguage services (or don't even install it), and use it for debugging only (or use the lldb extension for that too). Revisit cpptools when it has the features you need.
Activity
[-]Add cross-platform IntelliSense for C++20 modules importing[/-][+]Add IntelliSense for C++20 modules importing[/+]cjwijtmans commentedon Oct 16, 2021
Is there any way to get it somewhat working or does it not parse
.ifcfiles at all?sean-mcmanus commentedon Oct 19, 2021
Christ-Jan Wijtmans (@cjwijtmans) It may work with msvc mode with .ifc files for cl.exe, but it's not officialy supported yet. We process /headerUnit, /ifcSearchDir, /reference, and /stdIfcDir in compilerArgs.
Bigous commentedon Mar 8, 2022
I don't know if it's only for me, but #6290 just goes to 404 error...
The intellisense is not working for imports at all.
The definition:

And whe we use it:

But the compiler has no complains....
sean-mcmanus commentedon Mar 8, 2022
Richard Natal (@Bigous) It's not officially supported, but we do have code that processes various modules command lines. Can you provide the command line args you're using in compilerArgs, particularly those that are modules-related?
Bigous commentedon Mar 9, 2022
Hi Sean McManus (@sean-mcmanus) , actually I'm using the CMake to build... but essentially it's
/std:c++latest /experimental:module /EHsc /MD.It's a project to learn what C++20 brings and I really liked the module feature. I think it will save tons of time in compile.
I just uploaded the project to github so you can see all easily
sean-mcmanus commentedon Mar 9, 2022
target_compile_options(cpp20 PRIVATE "/experimental:module" "/ifcSearchDir\"C:\\pathTo\\build\""), i.e. see https://devblogs.microsoft.com/cppblog/standard-c20-modules-support-with-msvc-in-visual-studio-2019-version-16-8/ .140 remaining items
Sunrisepeak commentedon Sep 25, 2026
I developed a tool called "C++ Modules Language Server (mcppls)" for C++ modules; you might want to give it a try.
Support
miss-programgamer commentedon Sep 25, 2026
That's the noisiest, crustiest gif I've ever seen.
robindegen commentedon Sep 25, 2026
be cautious as there are only a handful of giant commits. This thing spawned out of nowhere.
If its real, great job. But exercise caution as it doesn't look like a typical project to me in the way it is managed.
Sunrisepeak commentedon Sep 25, 2026
I am a C++ Modules enthusiast, mcppls is built using the mcpp build tool. and mcppls have a tiny ci matrix for it, feel free to try it out (or as a temporary transitional solution), and please provide feedback if you encounter any problems.
soroshsabz commentedon Sep 25, 2026
SPeak (@Sunrisepeak) so any plan to submit a PR for this feature (in 2026 bug) on this repo?
If you don’t have the time or interest, we could submit a PR using your source code instead—though I think it would be better if you were the one to submit it.
soroshsabz commentedon Sep 25, 2026
Sean McManus (@sean-mcmanus) Colen Garoutte-Carson (@Colengms) do you have any comments?
Sunrisepeak commentedon Sep 25, 2026
A PR won't help here: the IntelliSense engine is a closed-source EDG binary(#6302 (comment)), and this repo is mostly the TS extension. As a temporary transitional solution, use a separate language server with "C_Cpp.intelliSenseEngine": "disabled". Options: mcppls, or clice (nearing stable).
soroshsabz commentedon Sep 25, 2026
SPeak (@Sunrisepeak) I think maybe we can use dual backend provider in this project (EDG and another modern engine)
maybe this approach open road to replacement EDG
soroshsabz commentedon Sep 25, 2026
Sean McManus (@sean-mcmanus) Colen Garoutte-Carson (@Colengms) do you open to this approach? (dual engine)
in another word if any PR with approach submit, do you accept that or not?
a4z commentedon Sep 29, 2026
I have to wonder why MS doesn't just advise Copilot to do the job and fix this.
Don't they trust their own product, or would the token cost be too high?
:-)
MathiasMagnus commentedon Sep 30, 2026
This issue decaying into a discussion rather than being an issue tracker, I'll just leave this here for whoever wants a solution today without jumping through hoops. Here's a minimal setup with clangd that works today with Clang/libc++, GCC/libstdc++, MSVC/MS-STL with CMake, all in VSCode. (Clang/MS-STL doesn't, but it's a Clang issue, not clangd specifically.)
Happy C++23 coding, just disable cpptools lannguage services (or don't even install it), and use it for debugging only (or use the lldb extension for that too). Revisit cpptools when it has the features you need.
sharadhr commentedon Sep 30, 2026
The EDG compiler which powers VS and VS Code IntelliSense is now open-source.
Going forward, I reckon we should contribute issues, changes, and fixes there directly.
soroshsabz commentedon Sep 30, 2026
SPeak (@Sunrisepeak) So, at now do you want to provide PR on https://github.com/edgcpp/compiler ?
soroshsabz commentedon Oct 15, 2026
soroshsabz commentedon Oct 16, 2026
SPeak (@Sunrisepeak) Sharadh Rajaraman (@sharadhr) you can see edgcpp/compiler#315