News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

clangd code completion

Started by juxin5, October 11, 2024, 07:38:40 AM

Previous topic - Next topic

Pecan

Quote from: juxin5 on October 12, 2024, 04:46:13 PM
Quote from: Michael Agarkov on October 12, 2024, 04:21:15 PM
I think your problem might be the same as in https://forums.next.codeblocks.org/index.php/topic,24357.msg169412.html#msg169412

thx for the reply.

so my clangd.exe is in "C:\Program Files\LLVM\bin\clangd.exe"
is that the problem? how do I fix it, like how do i get the file in the right path?

What have you got set at MainMenu/settings/Editor/Clangd_client/C/C++ parser (tab) as the path to clangd.exe ?

juxin5

Quote from: Pecan on October 12, 2024, 11:49:07 PM
Quote from: juxin5 on October 12, 2024, 04:46:13 PM
Quote from: Michael Agarkov on October 12, 2024, 04:21:15 PM
I think your problem might be the same as in https://forums.next.codeblocks.org/index.php/topic,24357.msg169412.html#msg169412

thx for the reply.

so my clangd.exe is in "C:\Program Files\LLVM\bin\clangd.exe"
is that the problem? how do I fix it, like how do i get the file in the right path?

What have you got set at MainMenu/settings/Editor/Clangd_client/C/C++ parser (tab) as the path to clangd.exe ?

thx for the reply.

it's "C:\Program Files\LLVM\bin\clangd.exe".


Quote from: Michael Agarkov on October 12, 2024, 05:21:12 PM
AFAIK you need to use MSYS2 and install GCC and Clang together in the same environment and use "mingw-w64-clang-x86_64-clang-tools-extra" for it to work properly.

that is a method listed on the wiki. And so is the LLVM one. They are both supposed to work right...?

Pecan

#17
Quote from: juxin5 on October 13, 2024, 03:15:27 AM

so my clangd.exe is in "C:\Program Files\LLVM\bin\clangd.exe"
thx for the reply.

it's "C:\Program Files\LLVM\bin\clangd.exe".

that is a method listed on the wiki. And so is the LLVM one. They are both supposed to work right...?

I'm going to guess the problem is caused by the space in "Program Files".

Clangd is essentially a Linux program which cannot handle spaces in file names.

We now need to determine if that is actually the problem.

First: Tell us how you start CodeBlocks so that we can then tell you how to turn the clangd_client logs on.

Then we can read the log to see what Clangd_client thinks the problem is.

Thanks for your patients.

wtfisgoingoff

Quote from: Pecan on October 13, 2024, 06:29:40 AM
Quote from: juxin5 on October 13, 2024, 03:15:27 AM

so my clangd.exe is in "C:\Program Files\LLVM\bin\clangd.exe"
thx for the reply.

it's "C:\Program Files\LLVM\bin\clangd.exe".

that is a method listed on the wiki. And so is the LLVM one. They are both supposed to work right...?

I'm going to guess the problem is caused by the space in "Program Files".

Clangd is essentially a Linux program which cannot handle spaces in file names.

We now need to determine if that is actually the problem.

First: Tell us how you start CodeBlocks so that we can then tell you how to turn the clangd_client logs on.

Then we can read the log to see what Clangd_client thinks the problem is.

Thanks for your patients.

Does  clangd code completion  list  those keywords  candidates ?   [ for while switch ...
The classic code completion dose. When I using classic code completion, after I typing  whi the whole while will be listed .  This happens to [for switch .. ] too.
But when I using clang_client,  I have to type whole switch [for while] by myself. 


default compiler: GNU GCC Compiler (msys2/ucrt64/bin/)
my projects' path has no spaces
Specify clangd executable to use: msys2/ucrt64/bin/cland.exe
gcc -v:          gcc version 14.2.0 (Rev1, Built by MSYS2 project)
clang -version: 18.1.8 

my settings  [attachments]

juxin5

Quote from: Pecan on October 13, 2024, 06:29:40 AM


I'm going to guess the problem is caused by the space in "Program Files".

Clangd is essentially a Linux program which cannot handle spaces in file names.

We now need to determine if that is actually the problem.

First: Tell us how you start CodeBlocks so that we can then tell you how to turn the clangd_client logs on.

Then we can read the log to see what Clangd_client thinks the problem is.

Thanks for your patients.

thx for the reply.

So I unzip the 3 .7z file (CB_20240807_rev13539_win64, wxmsw32u_gcc_cb_wx325_2D_gcc1410-mingw64, Mingw64dlls14.1.0)
into the same folder and start codeblocks.exe in it.

Pecan

#20
Quote from: juxin5 on October 13, 2024, 10:07:46 AM
thx for the reply.

So I unzip the 3 .7z file (CB_20240807_rev13539_win64, wxmsw32u_gcc_cb_wx325_2D_gcc1410-mingw64, Mingw64dlls14.1.0)
into the same folder and start codeblocks.exe in it.

So I guess you start Codeblocks by just typing "Codeblocks" or "Codeblocks.exe".

Good, so from now on type "codeblocks /d" to turn on the codeblocks debugger tab at the bottom.

Then go to Settings/Editor/clangd_client/ C/C++ parser(adv.)
Enable check boxes entitled "Enable plugin info logging" and "Enable plugin Debug logging".

Close CodeBlocks and restart it with the /d parameter to turn on those logs.

Load a project you'd normally load for editing.
Wait until the "Code::Blocks Debug" tab at the bottom stops scrolling information.

Right click on the "Code::Blocks Debug" tab at the bottom and choose "Copy contents to clipboard".

Now choose from the main menu, File/New/EmptyFile and say no if asked to add the file to the project.

Select and move the mouse into that empty file and paste into it (ctrl-z key). You should see the log now pasted into that empty editor file.

Save that file to %tmp%/Juxin5ClangdLog.txt, (or any folder that's convenient to you). %tmp% is the same as your C:\Temp  or C:/tmp folder.

Zip it up so that you can attach it to a reply to this message.

Thanks for your patients.
And forgive me if I insult your intelligence.

juxin5

Quote from: Pecan on October 13, 2024, 06:11:00 PM

So I guess you start Codeblocks by just typing "Codeblocks" or "Codeblocks.exe".

Good, so from now on type "codeblocks /d" to turn on the codeblocks debugger tab at the bottom.

Then go to Settings/Editor/clangd_client/ C/C++ parser(adv.)
Enable check boxes entitled "Enable plugin info logging" and "Enable plugin Debug logging".

Close CodeBlocks and restart it with the /d parameter to turn on those logs.

Load a project you'd normally load for editing.
Wait until the "Code::Blocks Debug" tab at the bottom stops scrolling information.
...



thx for the reply.

I think I found where the problem is. A project needed to be loaded for the clangd client to work properly. When only open the .cpp file, it will give the following error:


GetLSPclient: param pProject is missing


attached file is the log when loading single file.

I'm not sure if it's intended behavior but either way it's not convenient for me because sometimes I just want to edit a single file. Also classic code completion would work fine in such scenario.

juxin5

I forgot to say that clangd does work fine when I load a project, meaning the code completion works fine, while also has the issue user "wtfisgoingoff" mentioned.

Pecan

#23
Quote from: juxin5 on October 14, 2024, 08:23:27 AM
I forgot to say that clangd does work fine when I load a project, meaning the code completion works fine, while also has the issue user "wtfisgoingoff" mentioned.

This guy has got to be a troll. He has wasted a lot of good peoples time.

He said in the beginning that Clangd_client didn't work, now he says it worked fine all along.

Quote from: juxin5 on October 11, 2024, 07:38:40 AM
hello, first time here.
I followed the wiki page to enable the Clangd plugin, but the code completion is not working.
Is there something I am missing?
I'm using build 13539 on windows.

juxin5

Quote from: Pecan on October 14, 2024, 04:33:22 PM

He said in the beginning that Clangd_client didn't work, now he says it worked fine all along.

have you really read what I said? It does not work when I open files without a project.

You really think it works fine when it literally works worse than the classic code completion in this scenario?