mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-22 15:45:08 +00:00
C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting
24702a25b0
Some completion UI, such as Emacs' completion-at-point and company-lsp, display completion item label and detail side by side. This does not look right, when you see things like: "foo" "int foo()" "bar" "void bar(int i = 0)" When this option is enabled, the completion item label is very detailed, it shows the full signature of the candidate. The detail just contains the completion item parent context. Also, in this mode, functions with default arguments, generates one more item per default argument so that the right function call can be selected. That is, you get something like: "int foo()" "Foo" "void bar()" "Foo" "void bar(int i = 0)" "Foo" Be wary, this is quickly quite verbose, items can end up truncated by the UIs. |
||
---|---|---|
src | ||
third_party | ||
.appveyor.yml | ||
.clang_complete | ||
.clang-format | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.pep8 | ||
.travis.yml | ||
.ycm_extra_conf.py | ||
compile_commands.json | ||
README.md | ||
wscript |
cquery
cquery is a highly-scalable, low-latency language server for C/C++/Objective-C. It is tested and designed for large code bases like Chromium. cquery provides accurate and fast semantic analysis without interrupting workflow.
cquery implements almost the entire language server protocol and provides some extra features to boot:
- code completion (with both signature help and snippets)
- finding definition/references
- type hierarchy (parent type, derived types, expandable tree view)
- finding base/derived methods/classes, call tree
- symbol rename
- document and global symbol search
- hover tooltips showing symbol type
- diagnostics
- code actions (clang FixIts)
- darken/fade code disabled by preprocessor
- #include auto-complete, undefined type include insertion, include quick-jump (goto definition, document links)
- auto-implement functions without a definition
- semantic highlighting, including support for rainbow semantic highlighting
>>> Getting started (CLICK HERE) <<<
Limitations
cquery is able to respond to queries quickly because it caches a huge amount of information. When a request comes in, cquery just looks it up in the cache without running many computations. As a result, there's a large memory overhead. For example, a full index of Chrome will take about 10gb of memory. If you exclude v8, webkit, and third_party, it goes down to about 6.5gb.
License
MIT