Initialization options are applied (deserialized to the same object) in the following order:
* "initializationOptions" from client
* first -init=
* second -init=
* ...
Scalar options will be overridden but arrays will get concatenated, e.g.
ccls -log-file=/dev/stderr -index . -init='{"clang":{"extraArgs":["-DA"]}}' -init='{"clang":{"extraArgs":["-DB"]}}'
results in clang.extraArgs: ["-DA", "-DB"]
* Better LanguageId detection with clangDriver (e.g. .cu -> types::TY_CUDA)
* fallback when there is no .ccls or compile_commands.json
Also Hide clangTooling options from --help
Move using below #include to make preamble happy
textDocument/references: if no references, first line or last line => list where this file is included
malloc_trim() only if files have been indexed in last cycle
Intern: use CachedHashStringRef