...we can use CodeLite's method, let user choose which code completion they need or make the CCLS as a fallback.
I see some of my friend are using visual studio code, it also use some clang related tool to do code completion, and he said it is slow especially for a prject which has 10 or 20 more cpp files.
The nice thing about CCLS is that it can do more things about code completion, such as variable rename, go to reference ...
Agreed that we can use a method somewhat like CodeLites' to allow user code completion choices. But I'm still in the coding stage of adding all the current features of CB CC into the CB CCLS client.
RE: slowness of large projects:
CCLS has a nice way of getting around this problem.
It can be run as a standalone process that creates an indexed cache of all project files and symbols. It then can use/maintain this cache when a client sends didSave, didChange, didClose etc. requests and notifications.
Because it builds a file index/symbol cache as it's used, it gets faster with age. Since it does not have to ask for a clang parse on opening an already cached file, it's responsive immediately on project activation.
It's dependencies are a disadvantage because of size of distribution. To compile CCLS requires the clang includes and llvm dlls. CCLS must be at the same version level as clang/llvm.
For me, compiling CCLS on Windows required Msys2, clang, and some llvm dlls distributed with Msys2. All this because the Windows clang/llvm source is not distributed with all the needed clang headers. Sheesh
There must be some way around this since CodeLite does it. I need to explore how.