Skip to content
This repository has been archived by the owner on Jul 30, 2020. It is now read-only.

Initialization options

Fangrui Song edited this page Jan 13, 2018 · 26 revisions

You need to configure your language client plugin to send initialization options to the cquery process (the language server). cacheDirectory points to a directory storing indexing files so that next time cquery can load these indexing results without doing a re-index.

{
  "initializationOptions": {
    "cacheDirectory": "/tmp/cquery",
    "cacheFormat": "msgpack",
    "enableComments": 2
  }
}

You can also pass options through the cquery command line option --init:

  • shell: --init='{"enableComments": 2}' . Single quotes are used to escape words in shell.
  • VSCode: "cquery.launch.args": ["--init={\"enableComments\": 2}"],
  • Emacs: (setq cquery-extra-init-params '(:enableComments 2 :cacheFormat "msgpack"))

Indexing comments

"enableComments": 0
"enableComments": 1  // index Doxygen comment markers
"enableComments": 2  // use -fparse-all-comments and recognize plain // /*

With the value larger than 0, cquery will index comments associated with functions/types/variables (macros are not handled due to clang_Cursor_getRawCommentText's peculiarity).

This feature requires UI support as multi-line hover results poses a problem to editors:

Cache format

Two cache serialization formats are supported.

"cacheFormat": "json"
"cacheFormat": "msgpack"

"json" generates cacheDirectory/.../xxx.json files which can be pretty printed with jq.

"msgpack" uses a compact binary serialization format (the underlying wire format is MessagePack) which typically takes only 60% of the corresponding JSON size, but is difficult to inspect. "msgpack" does not store map keys and you need to re-index whenever a struct member has changed.