diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp --- a/clang-tools-extra/clangd/tool/ClangdMain.cpp +++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp @@ -982,6 +982,22 @@ Opts.Encoding = ForceOffsetEncoding; setIncludeCleanerAnalyzesStdlib(IncludeCleanerStdlib); + constexpr const char *ResourceEnvVar = "CLANGD_RESOURCE_DIR"; + std::string Resources; + if (!::getenv(ResourceEnvVar)) { + if (Opts.ResourceDir) + Resources = *Opts.ResourceDir; + if (Resources.empty()) { + static int StaticForMainAddr; + Resources = CompilerInvocation::GetResourcesPath( + "clangd", (void *)&StaticForMainAddr); + } + if (!Resources.empty()) { + ::setenv(ResourceEnvVar, Resources.c_str(), 1); + log("Setting {0} to \"{1}\"", ResourceEnvVar, Resources); + } + } + if (CheckFile.getNumOccurrences()) { llvm::SmallString<256> Path; if (auto Error =