Developer forums (C::B DEVELOPMENT STRICTLY!) > Plugins development
Code completion using LSP and clangd
Pecan:
The current rev 50 of clangd_client adds support to load and parse non-project files (some project must be active), allow macros in clangd installation path and fixes assorted crash and logic errors.
ollydbg:
--- Quote from: Pecan on April 25, 2022, 08:59:46 pm ---The current rev 50 of clangd_client adds support to load and parse non-project files (some project must be active), allow macros in clangd installation path and fixes assorted crash and logic errors.
--- End quote ---
Thanks, great work!
But I got build errors, see below build logs:
--- Code: ----------------- Build: Clangd_Client-wx31_64 in Clangd_Client-wx31_64 (compiler: GNU GCC Compiler)---------------
[ 33.3%] Running target pre-build steps
[ 66.7%] cmd /c @echo TARGET_OUTPUT_DIR: devel31_64\
TARGET_OUTPUT_DIR: devel31_64\
[100.0%] cmd /c @echo TARGET_OUTPUT_FILENAME: clangd_client.dll
TARGET_OUTPUT_FILENAME: clangd_client.dll
cmd /c @ECHO TARGET_DEVEL_DIR: D:\code\cb\cb_sf_git\cccrash2019
TARGET_DEVEL_DIR: D:\code\cb\cb_sf_git\cccrash2019
[ 3.4%] g++.exe -Wall -std=gnu++17 -m64 -g -g -pipe -mthreads -fmessage-length=0 -fexceptions -DHAVE_W32API_H -DBUILDING_PLUGIN -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DNOPCH -DwxUSE_UNICODE -D_WIN64 -DCC_NO_COLLAPSE_ITEM -DLOGGING -DDONT_SHOW_SERVER_CONSOLE -ID:\code\cb\cb_sf_git\cccrash2019\src\include -ID:\code\cb\cb_sf_git\cccrash2019\src\sdk\wxscintilla\include\ -ID:\code\cb\cb_sf_git\cccrash2019\src\include\tinyxml\ -ID:\code\cb\clangd_plugin\trunk\clangd_client\src -Isrc -Isrc\LSPclient\include -Isrc\winprocess -Isrc\winprocess\asyncprocess -Isrc\winprocess\misc -IF:\code\wxWidgets-3.1.6\include -IF:\code\wxWidgets-3.1.6\lib\gcc_dll\mswu -Isdk\wxscintilla\include -Iinclude\tinyxml -Isrc\LSPclient -c D:\code\cb\clangd_plugin\trunk\clangd_client\src\codecompletion\codecompletion.cpp -o .obj\clangd_client\src\codecompletion\codecompletion.o
D:\code\cb\clangd_plugin\trunk\clangd_client\src\codecompletion\codecompletion.cpp: In member function 'ProcessLanguageClient* CodeCompletion::CreateNewLanguageServiceProcess(cbProject*)':
D:\code\cb\clangd_plugin\trunk\clangd_client\src\codecompletion\codecompletion.cpp:2995:25: error: 'class ProcessLanguageClient' has no member named 'SetParser'
2995 | pLSPclient->SetParser( static_cast<Parser*>(pParser));
| ^~~~~~~~~
D:\code\cb\clangd_plugin\trunk\clangd_client\src\codecompletion\codecompletion.cpp: In member function 'void CodeCompletion::DoParseOpenedProjectAndActiveEditor(wxTimerEvent&)':
D:\code\cb\clangd_plugin\trunk\clangd_client\src\codecompletion\codecompletion.cpp:4747:23: error: 'class ProcessLanguageClient' has no member named 'SetParser'
4747 | pProxyClient->SetParser((Parser*)pProxyParser);
| ^~~~~~~~~
Process terminated with status 1 (0 minute(s), 13 second(s))
2 error(s), 0 warning(s) (0 minute(s), 13 second(s))
--- End code ---
The code snippet is around codecompletion.cpp line 2979, see below:
--- Code: --- if (pParser)
{
pParser->SetLSP_Client(pLSPclient);
// Create ProxyProject move to OnAppDoneStartup() //(ph 2022/04/16)
//// // Create a ProxyProject to use for non-project files (if not already existent )
//// GetParseManager()->SetProxyProject(pcbProject);
//// // Set the ProxyProject to share this clangd client.
//// cbProject* pProxyProject = GetParseManager()->GetProxyProject();
//// if (pProxyProject)
//// {
//// m_LSP_Clients[GetParseManager()->GetProxyProject()] = pLSPclient;
//// ParserBase* pProxyParser = GetParseManager()->GetParserByProject(pProxyProject);
//// pProxyParser->SetLSP_Client(pLSPclient);
//// }
pLSPclient->SetParser( static_cast<Parser*>(pParser));
}
pLSPclient->LSP_Initialize(pcbProject);
}
--- End code ---
BlueHazzard:
With this rev i get the following compiler errors:
--- Code: ---cb_clang\clangd_client\src\codecompletion\parser\parser.cpp|1405|error: 'class ProcessLanguageClient' has no member named 'GetClientsCBProject'; did you mean 'GetClientObject'?|
cb_clang\clangd_client\src\codecompletion\codecompletion.cpp|2995|error: 'class ProcessLanguageClient' has no member named 'SetParser'|
cb_clang\clangd_client\src\codecompletion\codecompletion.cpp|4747|error: 'class ProcessLanguageClient' has no member named 'SetParser'|
--- End code ---
[edit:] ollydbg was faster....
Pecan:
I have no idea why Tortoise svn hates me so much.
Rev 52 should now have the correct files.
I downloaded and compiled it ok.
Thanks guys !!
ollydbg:
--- Quote from: Pecan on April 26, 2022, 04:29:52 am ---I have no idea why Tortoise svn hates me so much.
Rev 52 should now have the correct files.
I downloaded and compiled it ok.
Thanks guys !!
--- End quote ---
Hi, Pecan, thanks for the fix.
In rev 52, why do you add a clangd_client.zip file to the repo?
BTW: I don't use TortoiseSVN, instead, I use TortoiseGit, and the git-svn bridge works OK in TortoiseGit.
EDIT:
CC_ProxyProject.cbp, what does this cbp file used for?
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version