logic: Fixes in header path detection

* Rerun header path detection when only cxx header path is present after update in migration
* Check if path exists in header and framework path detection on mac/linux
This commit is contained in:
Eberhard Graether
2019-01-29 13:49:40 +01:00
parent 5dcecdb3bd
commit 7d746ba947
3 changed files with 11 additions and 1 deletions
+5
View File
@@ -87,6 +87,11 @@ bool ApplicationSettings::load(const FilePath& filePath, bool readOnly)
cxxHeaderSearchPaths = utility::replaceOrAddCxxCompilerHeaderPath(cxxHeaderSearchPaths);
migration->setValuesInSettings(settings, "indexing/cxx/header_search_paths/header_search_path", cxxHeaderSearchPaths);
if (cxxHeaderSearchPaths.size() == 1)
{
migration->setValueInSettings(settings, "indexing/cxx/has_prefilled_header_search_paths", false);
}
}
));
@@ -18,7 +18,11 @@ std::vector<FilePath> CxxFrameworkPathDetector::getPaths() const
{
if (utility::isPostfix<std::string>(" (framework directory)", path))
{
frameworkPaths.push_back(FilePath(utility::replace(path, " (framework directory)", "")).makeCanonical());
FilePath p = FilePath(utility::replace(path, " (framework directory)", "")).makeCanonical();
if (p.exists())
{
frameworkPaths.push_back(p);
}
}
}
return frameworkPaths;
@@ -19,6 +19,7 @@ std::vector<FilePath> CxxHeaderPathDetector::getPaths() const
for (const std::string& path : paths)
{
if (!utility::isPostfix<std::string>(" (framework directory)", path) &&
FilePath(path).getCanonical().exists() &&
!FilePath(path).getCanonical().getConcatenated(L"/stdarg.h").exists())
{
headerSearchPaths.push_back(FilePath(path).makeCanonical());