ui: update list indexed headers when editing the compilation database text box (issue #724)
This commit is contained in:
committed by
Eberhard Graether
parent
f7262c805f
commit
eb142cfb4e
@@ -10,23 +10,13 @@
|
|||||||
#include "OrderedCache.h"
|
#include "OrderedCache.h"
|
||||||
#include "ResourcePaths.h"
|
#include "ResourcePaths.h"
|
||||||
#include "utility.h"
|
#include "utility.h"
|
||||||
|
#include "utilitySourceGroupCxx.h"
|
||||||
#include "utilityString.h"
|
#include "utilityString.h"
|
||||||
|
|
||||||
std::shared_ptr<clang::tooling::JSONCompilationDatabase> IndexerCommandCxx::loadCDB(const FilePath& cdbPath)
|
std::vector<FilePath> IndexerCommandCxx::getSourceFilesFromCDB(const FilePath& cdbPath)
|
||||||
{
|
{
|
||||||
if (cdbPath.empty() || !cdbPath.exists())
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string error;
|
std::string error;
|
||||||
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = std::shared_ptr<clang::tooling::JSONCompilationDatabase>(
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = utility::loadCDB(cdbPath, &error);
|
||||||
clang::tooling::JSONCompilationDatabase::loadFromFile(
|
|
||||||
utility::encodeToUtf8(cdbPath.wstr()),
|
|
||||||
error,
|
|
||||||
clang::tooling::JSONCommandLineSyntax::AutoDetect
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!error.empty())
|
if (!error.empty())
|
||||||
{
|
{
|
||||||
@@ -35,12 +25,7 @@ std::shared_ptr<clang::tooling::JSONCompilationDatabase> IndexerCommandCxx::load
|
|||||||
MessageStatus(message, true).dispatch();
|
MessageStatus(message, true).dispatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
return cdb;
|
return getSourceFilesFromCDB(cdb, cdbPath);
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<FilePath> IndexerCommandCxx::getSourceFilesFromCDB(const FilePath& cdbPath)
|
|
||||||
{
|
|
||||||
return getSourceFilesFromCDB(loadCDB(cdbPath), cdbPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<FilePath> IndexerCommandCxx::getSourceFilesFromCDB(
|
std::vector<FilePath> IndexerCommandCxx::getSourceFilesFromCDB(
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ class IndexerCommandCxx
|
|||||||
: public IndexerCommand
|
: public IndexerCommand
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static std::shared_ptr<clang::tooling::JSONCompilationDatabase> loadCDB(const FilePath& cdbPath);
|
|
||||||
static std::vector<FilePath> getSourceFilesFromCDB(const FilePath& cdbPath);
|
static std::vector<FilePath> getSourceFilesFromCDB(const FilePath& cdbPath);
|
||||||
static std::vector<FilePath> getSourceFilesFromCDB(
|
static std::vector<FilePath> getSourceFilesFromCDB(
|
||||||
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb, const FilePath& cdbPath);
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb, const FilePath& cdbPath);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
struct ParseLocation;
|
struct ParseLocation;
|
||||||
struct ParseLocation;
|
struct ParseLocation;
|
||||||
class CanonicalFilePathCache;
|
class CanonicalFilePathCache;
|
||||||
|
class FilePath;
|
||||||
|
|
||||||
namespace clang
|
namespace clang
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ std::set<FilePath> SourceGroupCxxCdb::filterToContainedFilePaths(const std::set<
|
|||||||
|
|
||||||
std::set<FilePath> SourceGroupCxxCdb::getAllSourceFilePaths() const
|
std::set<FilePath> SourceGroupCxxCdb::getAllSourceFilePaths() const
|
||||||
{
|
{
|
||||||
return getAllSourceFilePaths(IndexerCommandCxx::loadCDB(m_settings->getCompilationDatabasePathExpandedAndAbsolute()));
|
return getAllSourceFilePaths(utility::loadCDB(m_settings->getCompilationDatabasePathExpandedAndAbsolute()));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set<FilePath> SourceGroupCxxCdb::getAllSourceFilePaths(std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb) const
|
std::set<FilePath> SourceGroupCxxCdb::getAllSourceFilePaths(std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb) const
|
||||||
@@ -85,7 +85,7 @@ std::shared_ptr<IndexerCommandProvider> SourceGroupCxxCdb::getIndexerCommandProv
|
|||||||
std::shared_ptr<CxxIndexerCommandProvider> provider = std::make_shared<CxxIndexerCommandProvider>();
|
std::shared_ptr<CxxIndexerCommandProvider> provider = std::make_shared<CxxIndexerCommandProvider>();
|
||||||
|
|
||||||
const FilePath cdbPath = m_settings->getCompilationDatabasePathExpandedAndAbsolute();
|
const FilePath cdbPath = m_settings->getCompilationDatabasePathExpandedAndAbsolute();
|
||||||
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = IndexerCommandCxx::loadCDB(cdbPath);
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = utility::loadCDB(cdbPath);
|
||||||
if (!cdb)
|
if (!cdb)
|
||||||
{
|
{
|
||||||
return provider;
|
return provider;
|
||||||
@@ -161,7 +161,7 @@ std::shared_ptr<Task> SourceGroupCxxCdb::getPreIndexTask(
|
|||||||
if (m_settings->getUseCompilerFlags())
|
if (m_settings->getUseCompilerFlags())
|
||||||
{
|
{
|
||||||
const FilePath cdbPath = m_settings->getCompilationDatabasePathExpandedAndAbsolute();
|
const FilePath cdbPath = m_settings->getCompilationDatabasePathExpandedAndAbsolute();
|
||||||
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = IndexerCommandCxx::loadCDB(cdbPath);
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = utility::loadCDB(cdbPath);
|
||||||
if (cdb)
|
if (cdb)
|
||||||
{
|
{
|
||||||
const std::set<FilePath> sourceFilePaths = getAllSourceFilePaths(cdb);
|
const std::set<FilePath> sourceFilePaths = getAllSourceFilePaths(cdb);
|
||||||
|
|||||||
@@ -99,6 +99,30 @@ namespace utility
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> loadCDB(const FilePath& cdbPath, std::string* error)
|
||||||
|
{
|
||||||
|
if (cdbPath.empty() || !cdbPath.exists())
|
||||||
|
{
|
||||||
|
return std::shared_ptr<clang::tooling::JSONCompilationDatabase>();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string errorString;
|
||||||
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = std::shared_ptr<clang::tooling::JSONCompilationDatabase>(
|
||||||
|
clang::tooling::JSONCompilationDatabase::loadFromFile(
|
||||||
|
utility::encodeToUtf8(cdbPath.wstr()),
|
||||||
|
errorString,
|
||||||
|
clang::tooling::JSONCommandLineSyntax::AutoDetect
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (error && !errorString.empty())
|
||||||
|
{
|
||||||
|
*error = errorString;
|
||||||
|
}
|
||||||
|
|
||||||
|
return cdb;
|
||||||
|
}
|
||||||
|
|
||||||
bool containsIncludePchFlags(std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb)
|
bool containsIncludePchFlags(std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb)
|
||||||
{
|
{
|
||||||
for (const clang::tooling::CompileCommand& command : cdb->getAllCompileCommands())
|
for (const clang::tooling::CompileCommand& command : cdb->getAllCompileCommands())
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace clang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DialogView;
|
class DialogView;
|
||||||
|
class FilePath;
|
||||||
class SourceGroupSettingsWithCxxPchOptions;
|
class SourceGroupSettingsWithCxxPchOptions;
|
||||||
class StorageProvider;
|
class StorageProvider;
|
||||||
class Task;
|
class Task;
|
||||||
@@ -24,6 +25,7 @@ namespace utility
|
|||||||
std::shared_ptr<StorageProvider> storageProvider,
|
std::shared_ptr<StorageProvider> storageProvider,
|
||||||
std::shared_ptr<DialogView> dialogView);
|
std::shared_ptr<DialogView> dialogView);
|
||||||
|
|
||||||
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> loadCDB(const FilePath& cdbPath, std::string* error = nullptr);
|
||||||
bool containsIncludePchFlags(std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb);
|
bool containsIncludePchFlags(std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb);
|
||||||
bool containsIncludePchFlag(const std::vector<std::string>& args);
|
bool containsIncludePchFlag(const std::vector<std::string>& args);
|
||||||
std::vector<std::wstring> getWithRemoveIncludePchFlag(const std::vector<std::wstring>& args);
|
std::vector<std::wstring> getWithRemoveIncludePchFlag(const std::vector<std::wstring>& args);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "SourceGroupCxxCdb.h"
|
#include "SourceGroupCxxCdb.h"
|
||||||
#include "SourceGroupSettingsCxxCdb.h"
|
#include "SourceGroupSettingsCxxCdb.h"
|
||||||
#include "utility.h"
|
#include "utility.h"
|
||||||
|
#include "utilitySourceGroupCxx.h"
|
||||||
#include "utilityFile.h"
|
#include "utilityFile.h"
|
||||||
|
|
||||||
QtProjectWizardContentPathCDB::QtProjectWizardContentPathCDB(
|
QtProjectWizardContentPathCDB::QtProjectWizardContentPathCDB(
|
||||||
@@ -37,6 +38,7 @@ void QtProjectWizardContentPathCDB::populate(QGridLayout* layout, int& row)
|
|||||||
m_picker->setPickDirectory(false);
|
m_picker->setPickDirectory(false);
|
||||||
m_picker->setFileFilter("JSON Compilation Database (*.json)");
|
m_picker->setFileFilter("JSON Compilation Database (*.json)");
|
||||||
connect(m_picker, &QtLocationPicker::locationPicked, this, &QtProjectWizardContentPathCDB::pickedPath);
|
connect(m_picker, &QtLocationPicker::locationPicked, this, &QtProjectWizardContentPathCDB::pickedPath);
|
||||||
|
connect(m_picker, &QtLocationPicker::textChanged, this, &QtProjectWizardContentPathCDB::onPickerTextChanged);
|
||||||
|
|
||||||
QLabel* description = new QLabel(
|
QLabel* description = new QLabel(
|
||||||
"Sourcetrail will use all include paths and compiler flags from the Compilation Database and stay up-to-date "
|
"Sourcetrail will use all include paths and compiler flags from the Compilation Database and stay up-to-date "
|
||||||
@@ -112,6 +114,21 @@ void QtProjectWizardContentPathCDB::pickedPath()
|
|||||||
m_window->loadContent();
|
m_window->loadContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtProjectWizardContentPathCDB::onPickerTextChanged(const QString& text)
|
||||||
|
{
|
||||||
|
const FilePath cdbPath = utility::getExpandedAndAbsolutePath(FilePath(text.toStdWString()), m_settings->getProjectDirectoryPath());
|
||||||
|
if (!cdbPath.empty() && cdbPath.exists() &&
|
||||||
|
cdbPath != m_settings->getCompilationDatabasePathExpandedAndAbsolute())
|
||||||
|
{
|
||||||
|
std::string error;
|
||||||
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = utility::loadCDB(cdbPath, &error);
|
||||||
|
if (cdb && error.empty())
|
||||||
|
{
|
||||||
|
pickedPath();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<SourceGroupSettings> QtProjectWizardContentPathCDB::getSourceGroupSettings()
|
std::shared_ptr<SourceGroupSettings> QtProjectWizardContentPathCDB::getSourceGroupSettings()
|
||||||
{
|
{
|
||||||
return m_settings;
|
return m_settings;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ public:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void pickedPath();
|
void pickedPath();
|
||||||
|
void onPickerTextChanged(const QString& text);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<SourceGroupSettings> getSourceGroupSettings() override;
|
std::shared_ptr<SourceGroupSettings> getSourceGroupSettings() override;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ bool QtProjectWizardContentPathCxxPch::check()
|
|||||||
if (std::shared_ptr<SourceGroupSettingsCxxCdb> cdbSettings = std::dynamic_pointer_cast<SourceGroupSettingsCxxCdb>(m_settings))
|
if (std::shared_ptr<SourceGroupSettingsCxxCdb> cdbSettings = std::dynamic_pointer_cast<SourceGroupSettingsCxxCdb>(m_settings))
|
||||||
{
|
{
|
||||||
const FilePath cdbPath = cdbSettings->getCompilationDatabasePathExpandedAndAbsolute();
|
const FilePath cdbPath = cdbSettings->getCompilationDatabasePathExpandedAndAbsolute();
|
||||||
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = IndexerCommandCxx::loadCDB(cdbPath);
|
std::shared_ptr<clang::tooling::JSONCompilationDatabase> cdb = utility::loadCDB(cdbPath);
|
||||||
if (!cdb)
|
if (!cdb)
|
||||||
{
|
{
|
||||||
QMessageBox msgBox;
|
QMessageBox msgBox;
|
||||||
|
|||||||
Reference in New Issue
Block a user