[clangd] Introduce a CommandLineConfigProvider
authorKadir Cetinkaya <kadircet@google.com>
Fri, 5 Mar 2021 11:07:25 +0000 (12:07 +0100)
committerKadir Cetinkaya <kadircet@google.com>
Thu, 11 Mar 2021 12:35:05 +0000 (13:35 +0100)
commit4f1bbc0b842621d2048ed8687e328e2eab375b0a
tree00ee12b9f746dae83508f9f7a57f6151b821b47a
parentb1a5df174e1d5a58f2498c30795cf18c9bf3e1b1
[clangd] Introduce a CommandLineConfigProvider

This enables unifying command line flags with config options in clangd
internals. This patch changes behaviour in 2 places:
- BackgroundIndex was previously disabled when -remote-index was
provided. After this patch, it will be enabled but all files will have
bkgindex policy set to Skip.
- -index-file was loaded at startup (at least load was initiated), now
the load will happen through ProjectAwareIndex with first index query.

Unfortunately this doesn't simplify any options initially, as
- CompileCommandsDir is also used by clangd --check workflow, which
doesn't use configs.
- EnableBackgroundIndex option controls whether the component will be
created at all, which implies creation of extra threads registering a
listener for compilation database discoveries.

Differential Revision: https://reviews.llvm.org/D98029
clang-tools-extra/clangd/ClangdLSPServer.cpp
clang-tools-extra/clangd/ClangdLSPServer.h
clang-tools-extra/clangd/test/log.test
clang-tools-extra/clangd/tool/Check.cpp
clang-tools-extra/clangd/tool/ClangdMain.cpp