Developer forums (C::B DEVELOPMENT STRICTLY!) > Plugins development
Code completion using LSP and clangd
Pecan:
I have developed a clangd CB plugin client using Language Server Protocol (LSP).
It's working well.
However, it requires clangd version 12 to work even better.
What is the CodeBlocks policy of distributing an executable, say, clangd.exe v12 with the usual CodeBlock distribution.
CodeLite also distributes clangd with its LSP plugin.
Request for Comments.
oBFusCATed:
Shipping clangd is a windows thing. I don't think we should do it. Just detect the LLVM installation and use it. Or prompt the user to install it.
oBFusCATed:
What is the purpose of this LSP plugin? Just provide faster error messages?
In my experience implementing a CC plugin with LSP doesn't work well (don't remember the details).
ollydbg:
Hi, Pecan, good work!
For me, I think distribute a clangd.dll is OK, or we can distribute a separate plugin package(include the plugin and the clangd.dll). Then the user can just download and unpack it.
If I remember correctly, there is an option in CodeLite IDE, which can let user select which clangd.dll it will use.
Do you have a code repo which others can build/test this plugin?
--- Quote from: oBFusCATed on February 20, 2021, 11:34:07 pm ---What is the purpose of this LSP plugin? Just provide faster error messages?
In my experience implementing a CC plugin with LSP doesn't work well (don't remember the details).
--- End quote ---
Using the LSP, I think at least code completion list will be more precise than the native CC.
Pecan:
--- Quote from: oBFusCATed on February 20, 2021, 11:33:10 pm ---Shipping clangd is a windows thing. I don't think we should do it. Just detect the LLVM installation and use it. Or prompt the user to install it.
--- End quote ---
Just detecting the installation and using its clangd does not work. I've already tried that. The llvm's versions up to version 8 have no reliable clangd for a CB plugin.
The clangd in llvm versions 8 through 11 are so different from version 12 that the plugin using them would require two separate plugins or spaghetti code to support them.
CB will have to pick some version between 10 through 12 and program towards that.
I've chosen to work with clangd v12. It can reload the compile commands database without having to kill/restart the LSP server when a user opens a new file.
Navigation
[0] Message Index
[#] Next page
Go to full version