Difference between revisions of "CB Clangd Client"

From Code::Blocks
Line 8: Line 8:
 
'''Windows Clangd-Client Plugin install process''':
 
'''Windows Clangd-Client Plugin install process''':
 
<pre>
 
<pre>
     1) Install the LLVM or Clangd.exe as documented in the following section below:
+
     1) Install the LLVM or Clangd.exe as documented in the section below entitled:
      Windows-LLVM-ClangD-Install-Readme.txt
+
          "Windows Clangd executable install process"
 +
 
 
     2) Disable the Code completion plugin as follows:
 
     2) Disable the Code completion plugin as follows:
 
       a) Open the Plugin manager via  Code::Blocks menu "MainMenu=>Plugins=>Manage plugins..."  
 
       a) Open the Plugin manager via  Code::Blocks menu "MainMenu=>Plugins=>Manage plugins..."  
Line 17: Line 18:
 
           iii) If you get any errors please try again.
 
           iii) If you get any errors please try again.
 
   
 
   
     3) Install the Clangd-Client Plugin using one of the following options, which are documented later in this
+
     3) Install the Clangd-Client Plugin using one of the following options, which are documented below:  
      readme file:
 
 
       a) Install via the Plugin Manager
 
       a) Install via the Plugin Manager
 
       b) Manually install the plugin files
 
       b) Manually install the plugin files

Revision as of 20:20, 2 November 2022

The repository page of this plugin is: https://sourceforge.net/projects/cb-clangd-client/

It uses clangd through Language Server Protocol.

The related forum discussion is: — Code completion using LSP and clangd


Windows Clangd-Client Plugin install process:

    1) Install the LLVM or Clangd.exe as documented in the section below entitled:
          "Windows Clangd executable install process"

    2) Disable the Code completion plugin as follows:
       a) Open the Plugin manager via  Code::Blocks menu "MainMenu=>Plugins=>Manage plugins..." 
       b) In the Manage Plugin dialog do the following:
          i  ) Find and select the "Code completion" plugin via it's title 
          ii ) Press the "Disable" button on the right near the top
          iii) If you get any errors please try again.
	   
    3) Install the Clangd-Client Plugin using one of the following options, which are documented below: 
      a) Install via the Plugin Manager
      b) Manually install the plugin files
	
    4) Configure the Clangd-Client Plugin for use as follows:
       a) Select the CodeBlocks menu item "Settings->Editor..."
       b) In the list on the left click/select the "clangd_client" option.
       c) In the "C/C++ parser" tab change the "Specify clangd executable to use" to reference the clangd.exe you 
          installed via step 1) above. 
           Some examples of this could be:
              C:\msys64\clang64\bin\clangd.exe
              C:\msys64\clang32\bin\clangd.exe
              C:\LLVM\bin\clangd.exe
              C:\comilers\cmang\clangd.exe

Manually Install Clangd-Client Plugin

    1) Make sure Code::Blocks is not running.
    2) Navigate to the directory where the downloaded file "clangd_client.cbplugin" is and unzip it to a temporary 
       folder. DO NOT UNZIP in the same directory!!!
    3) Copy the unziped "clangd_client.zip" file to the Code::Blocks ...\share\CodeBlocks folder.
    4) Copy the unziped "clangd_client.dll" file to the Code::Blocks ...\share\Codeblocks\plugins folder
    5) Start Code::Blocks.

Removing Clangd-Client Plugin via the Plugin Manager

    1) Close any opened project or workspaces otherwise you may encounter a crash.
    2) Open the Plugin manager via the Code::Blocks "MainMenu=>Plugins=>Manage plugins..." menu
    3) In the Manage Plugin dialog do the following:
       a) In the plugin list select the "Clangd_Client" row
       b) Press the "Uninstall" button on the right
       c) If Code::Blocks is installed in one of the "Program Files" directories you will need to run Code::Blocks 
          as administrator due to Windows priviledges rules.

Manually Remove Clangd-Client Plugin

    1) Exit Code::Blocks!
    2)  a) If you manually installed the files or used the Plugin manager then you can do the following:
           i) In the Code::Blocks ...\share\CodeBlocks folder delete the clangd_client.zip file
          ii) In the Code::Blocks ...\share\CodeBlocks\plugins folder delete the clangd_client.dll file
        b) If you installed via the Plugin manager then you can delete the files with the following commands:
           i) del %APPDATA%\CodeBlocks\share\codeblocks\plugins\clangd_client.dll
          ii) del %APPDATA%\CodeBlocks\share\codeblocks\clangd_client.zip
    3) If you want to reuse older code completion remember to re-enable the plugin

Windows Clangd executable install process:

    There are three main options to install the clangd.exe:
       1) Install the LLVM compiler.
       2) Manully extract the required files from the LLVM compiler.
       3) Install the Clangd package for the Windows compiler you are using if it is available.

    The  process for the three options above are detailed below.

Install the LLVM compiler

   1) Download the latest (non RC/Beta)LLVM Windows executable for your OS (Win32 or Win64) from the following 
      Github LLVM download page:
      https://github.com/llvm/llvm-project/releases
  As of Jan 2022 the Windows files are names as follows:
     LLVM-<version>-win64.exe
     LLVM-<version>-win32.exe
  where <version> is the LLVM version, like 13.0.0 or 13.0.1.
   2) Run the LLVM-<version>-win<xx>.exe you downlaoded to install the LLVM compiler.


Manually Extract File from LLVM compiler

   1) Download the latest (non RC/Beta)LLVM Windows executable for your OS (Win32 or Win64) from the following 
      Github LLVM download page:
      https://github.com/llvm/llvm-project/releases
  As of Jan 2022 the Windows files are names as follows:
     LLVM-<version>-win64.exe
     LLVM-<version>-win32.exe
  where <version> is the LLVM version, like 13.0.0 or 13.0.1.
   2) Unzip the LLVM-<version>-win<xx>.exe file you downloaded using 7ZIP or your prefered ZIP program into a sub 
      directory
   3) Create a new directory to put the clangd.exe and dll's
   4) Copy the following files into a the new directory created from the unziped LLVM directory:
           bin\clangd.exe
           bin\msvcp140.dll
           bin\vcruntime140.dll
           bin\vcruntime140_1.dll


Windows Compiler Clangd/LLVM Package Installer

   Due to the number of different compilers available for Windows not all of the compilers will have either/both 
   the Clang or LLVM required files.
   If you want to install the specific package(s) for the Windows compiler you are using in order to use it's 
   clangd.exe file please follow the 
   instructions below for the specific compiler you have installed:
   MSYS2 Compiler - MinGW64
       There are two main options to install the clangd.exe as follows:
       1) The first option in order to  minimise disk space is to install the Clang extra tools using one of the 
           following packages:
           +------------------------------------------+------------------------+
           |               Package                    | Clangd executable      |
           +------------------------------------------+------------------------+
           | mingw-w64-clang-x86_64-clang-tools-extra | clang64/bin/clangd.exe |
           | mingw-w64-x86_64-clang-tools-extra       | mingw64/bin/clangd.exe |
           +------------------------------------------+------------------------+

          To intall the package do the following:
           a)  Open the msys2.exe bash shell 
           b) Run the following command:
                  pacman -S <Package name in the table above>
    
       '''OR'''
   
       2) The second option is to intall the full Clang tool chain as follows:
           a)  Open the msys2.exe bash shell 
           b) Run the following command:
                  pacman -S mingw-w64-clang-x86_64-toolchain
   MSYS2 Compiler - MinGW32
       There are two main options to install the clangd.exe as follows:

       1) The first option in order to  minimise disk space is to install the Clang extra tools using one of the 
          following packages:
           +------------------------------------------+------------------------+
           |               Package                    | Clangd executable      |
           +------------------------------------------+------------------------+
           | mingw-w64-clang-i686-clang-tools-extra   | clang32/bin/clangd.exe |
           | mingw-w64-i686-clang-tools-extra         | mingw32/bin/clangd.exe |
           +------------------------------------------+------------------------+

          To intall the package do the following:
            a)  Open the msys2.exe bash shell 
            b) Run the following command:
                  pacman -S <Package name in the table above>

        '''OR'''

       2) The second option is to install the full Clang tool chain as follows:
          a)  Open the msys2.exe bash shell 
          b) Run the following command:
                  pacman -S mingw-w64-clang-i686-toolchain
   -------------------------------------------------------------------------------------
   Notes from the CodeBlocks forum to avoid mixing incompatible gcc/clangd executables.
   -------------------------------------------------------------------------------------
       https://forums.codeblocks.org/index.php/topic,24357.msg169412.html#msg169412
        If you are using the gcc from msys2, (the compilers in the folder "msys64\mingw64\bin"),
        you should use "mingw-w64-x86_64-clang-tools-extra", (the clangd.exe is under the folder
	"msys64\mingw64\bin") the same folder as your gcc.exe.
 
	If you are using the clang tool chain, (the folder "msys64\clang64\bin"),
	you should use "mingw-w64-clang-x86_64-clang-tools-extra".

	I found that I just make a big mistake: that is I use the gcc toolchain from
        "msys64\mingw64\bin", but I use the clangd.exe from "msys64\clang64\bin".
        The result is I got a lot of LSP diagnostics messages and errors.
        Luckily I found the reason, and fix this issue. Hope this will help other guys.