clangd / vscode-clangd

Visual Studio Code extension for clangd
https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd
MIT License
594 stars 97 forks source link

Embed CPP Code completion into custom DSLs with cpp with snippets. #589

Open Rajsmit opened 4 months ago

Rajsmit commented 4 months ago

We are currently trying to add code completion support for the CPP code fragment inside the custom art language in Project Code Realtime (https://github.com/secure-dev-ops/code-realtime)

We are using Request forwarding concept to get the code completion from installed extension which support CPP language (clangd) . We already tried to setup Request-Forwarding to use the existing CPP language support provided by the clangd.

Unfortunately vscode.executeCompletionItemProvider command does not work as expected if the file is not opened and focus at least once in the VS Code IDE. If file is opened and focused then the code completion returns expected items but if the file is not opened it does return items which are global in nature and not specific to current position where user is interested for code completion.

I am attaching the screenshot for both scenario and logs for analysis.

CPP file not opened in IDE(returns random code completions)

CPPfilenotopened

CPP file opened in IDE

CPPfileopened

Logs

CPP file opened in IDE

I[12:57:57.016] <-- textDocument/completion(30)
I[12:57:57.043] Code complete: sema context DotMemberAccess, query scopes [] (AnyScope=true), expected type <none>
I[12:57:57.043] Code complete: 48 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 48 returned.
I[12:57:57.044] --> reply:textDocument/completion(30) 28 ms

CPP file is not opened in IDE

I[12:36:06.679] <-- textDocument/didOpen I[12:36:06.679] <-- textDocument/completion(18) I[12:36:06.680] ASTWorker building file d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp version 1 with command inferred from Cap2 [d:/test2/pub-sub/rtistic-pub-doc/art-comp-test/tests/RIC_ChoicePointConditionCheck_redefined_1_target] "C:\\Program Files\\LLVM\\bin\\clang++.exe" --driver-mode=g++ -Id:/test2/pub-sub/rtistic-pub-doc/art-comp-test/tests/RIC_ChoicePointConditionCheck_redefined_1_target -ID:/proj/code/coderealtime/src/TargetRTS/include -ID:/proj/code/coderealtime/src/TargetRTS/target/WinT -c -std=c++17 "-resource-dir=C:\\Program Files\\LLVM\\lib\\clang\\17" -- "d:\\test2\\pub-sub\\rtistic-pub-doc\\art-comp-test\\tests\\RIC_ChoicePointConditionCheck_redefined_1_target\\Cap2.cpp" I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h', IncludeHeader='file:///D:/proj/code/coderealtime/src/TargetRTS/include/RTConfig.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.17763.0/ucrt/corecrt_wio.h') into d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp: Header not on include path I[12:36:06.684] Code complete: 0 results from Sema, 95 from Index, 0 matched, 112 from identifiers, 100 returned (incomplete). I[12:36:06.687] --> reply:textDocument/completion(18) 7 ms I[12:36:06.689] --> textDocument/clangd.fileStatus I[12:36:06.699] <-- textDocument/didClose I[12:36:06.699] --> textDocument/publishDiagnostics I[12:36:06.985] Built preamble of size 5776184 for file d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp version 1 in 0.30 seconds I[12:36:06.985] --> workspace/semanticTokens/refresh(18) I[12:36:06.987] <-- reply(18)

System information Clangd version (from the log, or clangd --version): clangd version 17.0.1 Features: windows Platform: x86_64-pc-windows-msvc

clangd extension version: v0.1.26 Operating system: Windows 11

HighCommander4 commented 4 months ago

Here is a previous issue that contains some discussion that may be relevant: https://github.com/clangd/vscode-clangd/issues/440

Rajsmit commented 3 months ago

Hi @HighCommander4 ,

I tried with the suggestion to open the file CPP file in background using vscode API "vscode.workspace.openTextDocument" and it does trigger "textDocument/didOpen" on the file and then calling the code completion API. The code completion works only after first try. In the first try it returns some identifiers. I also activated the extension "llvm-vs-code-extensions.vscode-clangd" before i hit the code completion API. Could you please have a look and check what could be the issue? here is the log of first and second try

`Activate Extension I[12:56:32.963] clangd version 17.0.1 I[12:56:32.965] Features: windows I[12:56:32.965] PID: 15088 I[12:56:32.965] Working directory: d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\TestUtils I[12:56:32.965] argv[0]: C:\Program Files\LLVM\bin\clangd.EXE I[12:56:32.978] Starting LSP over stdin/stdout I[12:56:32.978] <-- initialize(0) I[12:56:32.982] --> reply:initialize(0) 3 ms I[12:56:33.765] <-- initialized

First Code completion Call

I[12:57:02.115] <-- textDocument/didOpen I[12:57:02.117] <-- textDocument/completion(1) I[12:57:02.120] Loaded compilation database from d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\compile_commands.json I[12:57:02.120] --> window/workDoneProgress/create(0) I[12:57:02.120] Enqueueing 9 commands for indexing I[12:57:02.121] ASTWorker building file d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp version 3 with command inferred from Cap2 [d:/test2/pub-sub/rtistic-pub-doc/art-comp-test/tests/RIC_ChoicePointConditionCheck_redefined_1_target] "C:\Program Files\LLVM\bin\clang++.exe" --driver-mode=g++ -Id:/test2/pub-sub/rtistic-pub-doc/art-comp-test/tests/RIC_ChoicePointConditionCheck_redefined_1_target -ID:/proj/code/coderealtime/src/TargetRTS/include -ID:/proj/code/coderealtime/src/TargetRTS/target/WinT -c -std=c++17 "-resource-dir=C:\Program Files\LLVM\lib\clang\17" -- "d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp" I[12:57:02.122] Code complete: 0 results from Sema, 0 from Index, 0 matched, 112 from identifiers, 100 returned (incomplete). I[12:57:02.126] <-- reply(0) I[12:57:02.126] --> $/progress I[12:57:02.126] --> $/progress I[12:57:02.129] --> reply:textDocument/completion(1) 12 ms I[12:57:02.140] --> textDocument/clangd.fileStatus I[12:57:02.155] <-- textDocument/didClose I[12:57:02.155] --> textDocument/publishDiagnostics I[12:57:02.561] Built preamble of size 5776188 for file d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp version 3 in 0.42 seconds I[12:57:02.562] --> workspace/semanticTokens/refresh(1) I[12:57:02.562] Indexing c++17 standard library in the context of d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp I[12:57:02.564] <-- reply(1) I[12:57:04.096] Indexed c++17 standard library (incomplete due to errors): 14553 symbols, 1064 filtered

Second Code completion Call

I[12:57:08.071] <-- textDocument/didOpen I[12:57:08.074] ASTWorker building file d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp version 3 with command inferred from Cap2 [d:/test2/pub-sub/rtistic-pub-doc/art-comp-test/tests/RIC_ChoicePointConditionCheck_redefined_1_target] "C:\Program Files\LLVM\bin\clang++.exe" --driver-mode=g++ -Id:/test2/pub-sub/rtistic-pub-doc/art-comp-test/tests/RIC_ChoicePointConditionCheck_redefined_1_target -ID:/proj/code/coderealtime/src/TargetRTS/include -ID:/proj/code/coderealtime/src/TargetRTS/target/WinT -c -std=c++17 "-resource-dir=C:\Program Files\LLVM\lib\clang\17" -- "d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp" I[12:57:08.089] --> textDocument/clangd.fileStatus I[12:57:08.460] Built preamble of size 5776188 for file d:\test2\pub-sub\rtistic-pub-doc\art-comp-test\tests\RIC_ChoicePointConditionCheck_redefined_1_target\Cap2.cpp version 3 in 0.37 seconds I[12:57:08.460] --> workspace/semanticTokens/refresh(2) I[12:57:08.463] <-- reply(2) E[12:57:08.544] IncludeCleaner: Failed to get an entry for resolved path : no such file or directory I[12:57:08.548] --> textDocument/publishDiagnostics I[12:57:08.548] --> textDocument/inactiveRegions I[12:57:08.549] --> textDocument/clangd.fileStatus I[12:57:09.078] <-- textDocument/completion(2) I[12:57:09.108] Code complete: sema context DotMemberAccess, query scopes [] (AnyScope=true), expected type I[12:57:09.109] Code complete: 48 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 48 returned. I[12:57:09.110] --> reply:textDocument/completion(2) 31 ms `

HighCommander4 commented 3 months ago

I tried with the suggestion to open the file CPP file in background using vscode API "vscode.workspace.openTextDocument" and it does trigger "textDocument/didOpen" on the file and then calling the code completion API. The code completion works only after first try. In the first try it returns some identifiers. I also activated the extension "llvm-vs-code-extensions.vscode-clangd" before i hit the code completion API. Could you please have a look and check what could be the issue?

I believe the reason for this is that clangd tries to respond to completion requests with low latency. When a file is opened, clangd starts parsing the file contents into an AST in the background. If a completion request arrives before the parsing is complete, clangd answers the completion request based on the project's index only. If the AST is ready when the completion request arrives, clangd answers the completion request using both the AST and the index.

In your case, the first request is received before the AST is ready, and the second request is received after.

Clangd actually has a command line option to control this behaviour: --completion-parse=always makes completion requests block until the AST is ready. With that, you should get the desired results on the first request.

Rajsmit commented 3 months ago

Hi @HighCommander4 , Thanks for the information with the above argument --completion-parse=always to clangd. I am able to get the code completion from first request onwards.

Thanks for the great help.

Regards, Rajesh Kumar.