2018-03-31 03:16:33 +00:00
# ccls
2017-04-26 01:47:10 +00:00
2018-07-10 06:40:26 +00:00
ccls is a rewrite of cquery (originally written by Jacob Dufault),
2018-03-31 05:05:21 +00:00
a C/C++/Objective-C language server.
2017-06-14 07:08:25 +00:00
2017-05-15 07:31:44 +00:00
* code completion (with both signature help and snippets)
2018-05-05 03:40:52 +00:00
* [definition ](src/messages/text_document_definition.cc )/[references](src/messages/text_document_references.cc), and other cross references
2018-04-07 17:43:56 +00:00
* [call (caller/callee) hierarchy ](src/messages/ccls_call_hierarchy.cc ), [inheritance (base/derived) hierarchy ](src/messages/ccls_inheritance_hierarchy.cc ), [member hierarchy ](src/messages/ccls_member_hierarchy.cc )
2018-03-17 17:10:26 +00:00
* [symbol rename ](src/messages/text_document_rename.cc )
2018-03-17 17:04:12 +00:00
* [document symbols ](src/messages/text_document_document_symbol.cc ) and approximate search of [workspace symbol ](src/messages/workspace_symbol.cc )
* [hover information ](src/messages/text_document_hover.cc )
2017-05-10 06:13:56 +00:00
* diagnostics
2017-05-20 19:31:07 +00:00
* code actions (clang FixIts)
2018-03-17 17:04:12 +00:00
* preprocessor skipped regions
2018-01-10 08:01:31 +00:00
* semantic highlighting, including support for [rainbow semantic highlighting ](https://medium.com/@evnbr/coding-in-color-3a6db2743a1e )
2017-04-18 04:53:34 +00:00
2018-05-17 06:49:21 +00:00
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 ](../../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.
2018-07-15 07:57:48 +00:00
The comparison with cquery as noted on 2018-07-15:
2018-05-17 06:49:21 +00:00
2018-07-10 06:40:26 +00:00
| | cquery | ccls |
|------------ |--------------------------------|------------------------------|
| third_party | more | fewer |
| C++ | C++14 | C++17 |
2018-07-15 07:57:48 +00:00
| clang API | libclang (C) | clang/llvm C++ |
2018-07-10 06:40:26 +00:00
| Filesystem | AbsolutePath + custom routines | llvm/Support |
| index | libclang | clangIndex, some enhancement |
| pipeline | index merge+id remapping | simpler and more robust |
2018-05-17 06:49:21 +00:00
2018-07-15 07:57:48 +00:00
cquery has system include path detection (through running the compiler driver) while ccls uses clangDriver.
2017-04-18 04:53:34 +00:00
2018-05-05 03:40:52 +00:00
# >>> [Getting started](../../wiki/Getting-started) (CLICK HERE) <<<
2017-04-18 04:53:34 +00:00
2018-05-05 03:40:52 +00:00
* [Build ](../../wiki/Build )
* [Emacs ](../../wiki/Emacs )
* [FAQ ](../../wiki/FAQ )