mirror of
				https://github.com/MaskRay/ccls.git
				synced 2025-11-03 22:04:24 +00:00 
			
		
		
		
	C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting
			
		
		
		
		
		
		
		
		
		
		
		
			| 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.