clangd LSP
C/C++ language server integration providing comprehensive code intelligence through clangd (part of LLVM).
Capabilities
- Code intelligence: Autocomplete, go-to-definition, find references
- Error detection: Real-time diagnostics for compilation errors
- Formatting: Code formatting with clang-format
- Refactoring: Rename symbols, extract function
- Supported extensions:
.c,.h,.cpp,.cc,.cxx,.hpp,.hxx,.C,.H
Installation
Via Homebrew (macOS)
brew install llvm
# Add to PATH
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
Via package manager (Linux)
# Ubuntu/Debian
sudo apt install clangd
# Fedora
sudo dnf install clang-tools-extra
# Arch Linux
sudo pacman -S clang
Windows
winget install LLVM.LLVM
Or download from LLVM releases.
Verify installation:
clangd --version
Usage
The language server runs automatically in LSP-compatible editors. For manual operations:
Compile
gcc file.c -o output # C
g++ file.cpp -o output # C++
clang file.c -o output # with clang
Format code
clang-format -i file.cpp
Static analysis
clang-tidy file.cpp -- -std=c++17
Configuration
Create .clangd in project root:
CompileFlags:
Add: [-std=c++17, -Wall, -Wextra]
Remove: [-W*]
Diagnostics:
UnusedIncludes: Strict
MissingIncludes: Strict
Or compile_commands.json for complex projects:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
# or
bear -- make
Integration Pattern
When editing C/C++ code:
- clangd uses
compile_commands.jsonfor project understanding - Run
clang-formatto format code - Use
clang-tidyfor static analysis - Compile with warnings enabled (
-Wall -Wextra)
Common Flags
Compile flags:
-std=c++17- C++17 standard-Wall -Wextra- Enable warnings-O2- Optimization level-g- Debug symbols-I<path>- Include path-L<path>- Library path
clang-tidy checks:
clang-tidy file.cpp --checks='*' --
clang-tidy file.cpp --fix -- # Auto-fix