simark added inline comments.
================
Comment at: clangd/ClangdLSPServer.cpp:430
CDB.clear();
-
- reparseOpenedFiles();
+ compileCommandsChangePost(CCChangeData);
}
----------------
malaperle wrote:
> ilya-biryukov wrote:
> > Maybe keep the old logic of reparsing all open files? This would make the
> > change way simpler and I don't think we need this extra complexity in the
> > long run, when we have better integration with the build system.
> >
> > ClangdServer will reuse the preamble if compile command didn't change
> > anyway, so reparse will be very fast and shouldn't be affected.
> > If the compile command does change, we'll retrigger the full rebuild.
> I think the change is not that complex but brings much added value. About the
> integration with the build system, there are many build systems out there so
> I don't think better integration will be useful in many scenarios (plain
> make, custom builds, etc). This solution is generic enough so that any build
> system that generates compile_commands.json will be supported in a pretty
> good way.
@malaperle also suggested an alternative way of doing it. Instead of saving
the the compile commands in a custom structure before clearing the cache, we
could save the compile flags in the `ParsedAST` object. When some
compile_commands.json changes, we can compare the new compile flags with this
saved copy. I think it would make the code a bit more straightforward.
================
Comment at: clangd/clients/clangd-vscode/src/extension.ts:35
['cpp', 'c', 'cc', 'cxx', 'c++', 'm', 'mm', 'h', 'hh', 'hpp', 'hxx',
'inc'].join() + '}';
+ const compileCommandsFilePattern: string = '**/compile_commands.json';
const clientOptions: vscodelc.LanguageClientOptions = {
----------------
ilya-biryukov wrote:
> These watches apply to the children of the workspace root only, right?
> E.g., I quite often open the workspace in
> 'llvm/tools/clang/tools/extra/clangd', would my `compile_commands.json`,
> that's outside the workspace, be watched for changes?
You are right, I don't think files outside the workspace would get watched.
For your use case, we'll need clangd to watch (or ask the client to watch) the
file.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D49267
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits