aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/haskell/haskellproject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/haskell/haskellproject.cpp')
-rw-r--r--plugins/haskell/haskellproject.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/plugins/haskell/haskellproject.cpp b/plugins/haskell/haskellproject.cpp
index 92b30e6..fdea603 100644
--- a/plugins/haskell/haskellproject.cpp
+++ b/plugins/haskell/haskellproject.cpp
@@ -70,12 +70,13 @@ HaskellProjectNode::HaskellProjectNode(const FilePath &projectFilePath)
{}
HaskellProject::HaskellProject(const Utils::FilePath &fileName)
- : Project(Constants::C_HASKELL_PROJECT_MIMETYPE, fileName, [this] { refresh(); })
+ : Project(Constants::C_HASKELL_PROJECT_MIMETYPE, fileName)
{
setId(Constants::C_HASKELL_PROJECT_ID);
setDisplayName(fileName.toFileInfo().completeBaseName());
updateFiles();
connect(this, &Project::activeTargetChanged, this, &HaskellProject::updateApplicationTargets);
+ connect(this, &Project::projectFileIsDirty, this, &HaskellProject::refresh);
}
bool HaskellProject::isHaskellProject(Project *project)
@@ -85,7 +86,7 @@ bool HaskellProject::isHaskellProject(Project *project)
void HaskellProject::updateFiles()
{
- emitParsingStarted();
+ m_parseGuard = guardParsingRun();
FilePath projectDir = projectDirectory();
QFuture<QList<FileNode *>> future = Utils::runAsync([this, projectDir] {
return FileNode::scanForFiles(projectDir, [this](const FilePath &fn) -> FileNode * {
@@ -104,7 +105,8 @@ void HaskellProject::updateFiles()
});
root->addNestedNodes(std::move(nodePtrs));
setRootProjectNode(std::unique_ptr<ProjectNode>(root));
- emitParsingFinished(true);
+ m_parseGuard.markAsSuccess();
+ m_parseGuard = {};
});
}