mirror of
https://github.com/MaskRay/ccls.git
synced 2025-08-21 06:02:25 +00:00
C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting
execinfo is not specified as linking dependencies, but libLLVMSupport requires it. Specify execinfo as linking dependency for FreeBSD in cmake/FindClang.cmake. |
||
---|---|---|
ci | ||
clang_archive_hashes | ||
cmake | ||
index_tests | ||
src | ||
third_party | ||
.clang-format | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
README.md |
ccls
ccls is a rewrite of cquery (originally written by Jacob Dufault), a C/C++/Objective-C language server.
- code completion (with both signature help and snippets)
- definition/references, and other cross references
- call (caller/callee) hierarchy, inheritance (base/derived) hierarchy, member hierarchy
- symbol rename
- document symbols and approximate search of workspace symbol
- hover information
- diagnostics
- code actions (clang FixIts)
- preprocessor skipped regions
- semantic highlighting, including support for rainbow semantic highlighting
It makes use of C++17 features, has less third-party dependencies and slimmed-down code base. Cross reference features are strenghened, (see wiki/FAQ. It currently uses libclang to index C++ code but will switch to Clang C++ API. Refactoring and formatting are non-goals as they can be provided by clang-format, clang-include-fixer and other Clang based tools.
The comparison with cquery as noted on 2018-07-09:
cquery | ccls | |
---|---|---|
third_party | more | fewer |
C++ | C++14 | C++17 |
clang API | libclang (C) | libclang + clang/llvm C++ |
Filesystem | AbsolutePath + custom routines | llvm/Support |
index | libclang | clangIndex, some enhancement |
pipeline | index merge+id remapping | simpler and more robust |
cquery has system include path detection (through running the compiler driver) while ccls does not.