if (UseDirBasedCDB)
BaseCDB = llvm::make_unique<DirectoryBasedGlobalCompilationDatabase>(
CompileCommandsDir);
- CDB.emplace(BaseCDB.get());
+ CDB.emplace(BaseCDB.get(), Params.initializationOptions.fallbackFlags);
Server.emplace(*CDB, FSProvider, static_cast<DiagnosticsConsumer &>(*this),
ClangdServerOpts);
applyConfiguration(Params.initializationOptions.ConfigSettings);
tooling::CompileCommand(std::move(Entry.second.workingDirectory), File,
std::move(Entry.second.compilationCommand),
/*Output=*/"");
- if (Old != New)
+ if (Old != New) {
CDB->setCompileCommand(File, std::move(New));
- ShouldReparseOpenFiles = true;
+ ShouldReparseOpenFiles = true;
+ }
}
if (ShouldReparseOpenFiles)
reparseOpenedFiles();
fromJSON(Params, Opts.ConfigSettings);
O.map("compilationDatabasePath", Opts.compilationDatabasePath);
+ O.map("fallbackFlags", Opts.fallbackFlags);
return true;
}
ConfigurationSettings ConfigSettings;
llvm::Optional<std::string> compilationDatabasePath;
+ // Additional flags to be included in the "fallback command" used when
+ // the compilation database doesn't describe an opened file.
+ // The command used will be approximately `clang $FILE $fallbackFlags`.
+ std::vector<std::string> fallbackFlags;
};
bool fromJSON(const llvm::json::Value &, InitializationOptions &);