clangd-lsp
v1.0.0C/C++ language server (clangd) providing code intelligence, diagnostics, and formatting for .c, .h, .cpp, .cc, .cxx, .hpp, .hxx files. Use when working with C or C++ code that needs autocomplete, go-to-definition, find references, error detection, or refactoring support.
Installation
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:
1. clangd uses compile_commands.json for project understanding
2. Run clang-format to format code
3. Use clang-tidy for static analysis
4. 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
More Information
- clangd Website
- Getting Started Guide
- LLVM Project