aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/nim')
-rw-r--r--src/plugins/nim/CMakeLists.txt35
-rw-r--r--src/plugins/nim/editor/nimcompletionassistprovider.cpp4
-rw-r--r--src/plugins/nim/nim.pro2
-rw-r--r--src/plugins/nim/nim.qbs1
-rw-r--r--src/plugins/nim/nimconstants.h8
-rw-r--r--src/plugins/nim/nimplugin.cpp2
-rw-r--r--src/plugins/nim/project/nimbuildconfiguration.cpp53
-rw-r--r--src/plugins/nim/project/nimbuildconfiguration.h10
-rw-r--r--src/plugins/nim/project/nimbuildconfigurationwidget.cpp85
-rw-r--r--src/plugins/nim/project/nimbuildconfigurationwidget.h58
-rw-r--r--src/plugins/nim/project/nimcompilerbuildstep.cpp39
-rw-r--r--src/plugins/nim/project/nimcompilerbuildstep.h16
-rw-r--r--src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp10
-rw-r--r--src/plugins/nim/project/nimcompilercleanstep.cpp2
-rw-r--r--src/plugins/nim/project/nimcompilercleanstep.h2
-rw-r--r--src/plugins/nim/project/nimproject.cpp17
-rw-r--r--src/plugins/nim/project/nimproject.h6
-rw-r--r--src/plugins/nim/project/nimprojectnode.cpp12
-rw-r--r--src/plugins/nim/project/nimprojectnode.h4
-rw-r--r--src/plugins/nim/project/nimrunconfiguration.cpp12
-rw-r--r--src/plugins/nim/project/nimtoolchain.cpp36
-rw-r--r--src/plugins/nim/project/nimtoolchain.h17
-rw-r--r--src/plugins/nim/project/nimtoolchainfactory.cpp49
-rw-r--r--src/plugins/nim/project/nimtoolchainfactory.h7
-rw-r--r--src/plugins/nim/settings/nimtoolssettingspage.cpp10
-rw-r--r--src/plugins/nim/settings/nimtoolssettingspage.h4
-rw-r--r--src/plugins/nim/suggest/nimsuggestcache.cpp2
-rw-r--r--src/plugins/nim/suggest/nimsuggestcache.h4
-rw-r--r--src/plugins/nim/suggest/server.cpp8
29 files changed, 160 insertions, 355 deletions
diff --git a/src/plugins/nim/CMakeLists.txt b/src/plugins/nim/CMakeLists.txt
new file mode 100644
index 0000000000..ac450f76f4
--- /dev/null
+++ b/src/plugins/nim/CMakeLists.txt
@@ -0,0 +1,35 @@
+add_qtc_plugin(Nim
+ PLUGIN_DEPENDS Core TextEditor ProjectExplorer
+ SOURCES
+ editor/nimcompletionassistprovider.cpp editor/nimcompletionassistprovider.h
+ editor/nimeditorfactory.cpp editor/nimeditorfactory.h
+ editor/nimhighlighter.cpp editor/nimhighlighter.h
+ editor/nimindenter.cpp editor/nimindenter.h
+ nim.qrc
+ nimconstants.h
+ nimplugin.cpp nimplugin.h
+ project/nimbuildconfiguration.cpp project/nimbuildconfiguration.h
+ project/nimcompilerbuildstep.cpp project/nimcompilerbuildstep.h
+ project/nimcompilerbuildstepconfigwidget.cpp project/nimcompilerbuildstepconfigwidget.h project/nimcompilerbuildstepconfigwidget.ui
+ project/nimcompilercleanstep.cpp project/nimcompilercleanstep.h
+ project/nimcompilercleanstepconfigwidget.cpp project/nimcompilercleanstepconfigwidget.h project/nimcompilercleanstepconfigwidget.ui
+ project/nimproject.cpp project/nimproject.h
+ project/nimprojectnode.cpp project/nimprojectnode.h
+ project/nimrunconfiguration.cpp project/nimrunconfiguration.h
+ project/nimtoolchain.cpp project/nimtoolchain.h
+ project/nimtoolchainfactory.cpp project/nimtoolchainfactory.h
+ settings/nimcodestylepreferencesfactory.cpp settings/nimcodestylepreferencesfactory.h
+ settings/nimcodestylepreferenceswidget.cpp settings/nimcodestylepreferenceswidget.h settings/nimcodestylepreferenceswidget.ui
+ settings/nimcodestylesettingspage.cpp settings/nimcodestylesettingspage.h
+ settings/nimsettings.cpp settings/nimsettings.h
+ settings/nimtoolssettingspage.cpp settings/nimtoolssettingspage.h
+ settings/nimtoolssettingswidget.ui
+ suggest/client.cpp suggest/client.h
+ suggest/clientrequests.cpp suggest/clientrequests.h
+ suggest/nimsuggest.cpp suggest/nimsuggest.h
+ suggest/nimsuggestcache.cpp suggest/nimsuggestcache.h
+ suggest/server.cpp suggest/server.h
+ suggest/sexprlexer.h suggest/sexprparser.h
+ tools/nimlexer.cpp tools/nimlexer.h
+ tools/sourcecodestream.h
+)
diff --git a/src/plugins/nim/editor/nimcompletionassistprovider.cpp b/src/plugins/nim/editor/nimcompletionassistprovider.cpp
index ec7544bfed..9fcf30c4b0 100644
--- a/src/plugins/nim/editor/nimcompletionassistprovider.cpp
+++ b/src/plugins/nim/editor/nimcompletionassistprovider.cpp
@@ -158,7 +158,7 @@ private:
static Suggest::NimSuggest *nimSuggestInstance(const AssistInterface *interface)
{
- auto filename = Utils::FileName::fromString(interface->fileName());
+ auto filename = Utils::FilePath::fromString(interface->fileName());
return Nim::Suggest::NimSuggestCache::instance().get(filename);
}
@@ -170,7 +170,7 @@ private:
int line = 0, column = 0;
Utils::Text::convertPosition(interface->textDocument(), pos, &line, &column);
QTC_ASSERT(column >= 1, return nullptr);
- auto filename = Utils::FileName::fromString(interface->fileName());
+ auto filename = Utils::FilePath::fromString(interface->fileName());
return suggest->sug(filename.toString(), line, column - 1, dirtyFile);
}
diff --git a/src/plugins/nim/nim.pro b/src/plugins/nim/nim.pro
index e2e4fb18c1..2cb7bb2de3 100644
--- a/src/plugins/nim/nim.pro
+++ b/src/plugins/nim/nim.pro
@@ -24,7 +24,6 @@ HEADERS += \
project/nimcompilercleanstep.h \
project/nimcompilercleanstepconfigwidget.h \
project/nimrunconfiguration.h \
- project/nimbuildconfigurationwidget.h \
editor/nimeditorfactory.h \
settings/nimcodestylesettingspage.h \
settings/nimcodestylepreferencesfactory.h \
@@ -55,7 +54,6 @@ SOURCES += \
project/nimcompilercleanstep.cpp \
project/nimcompilercleanstepconfigwidget.cpp \
project/nimrunconfiguration.cpp \
- project/nimbuildconfigurationwidget.cpp \
editor/nimeditorfactory.cpp \
settings/nimcodestylesettingspage.cpp \
settings/nimcodestylepreferencesfactory.cpp \
diff --git a/src/plugins/nim/nim.qbs b/src/plugins/nim/nim.qbs
index b009e4d88f..cf5dc40930 100644
--- a/src/plugins/nim/nim.qbs
+++ b/src/plugins/nim/nim.qbs
@@ -37,7 +37,6 @@ QtcPlugin {
prefix: "project/"
files: [
"nimbuildconfiguration.h", "nimbuildconfiguration.cpp",
- "nimbuildconfigurationwidget.h", "nimbuildconfigurationwidget.cpp",
"nimcompilerbuildstep.h", "nimcompilerbuildstep.cpp",
"nimcompilerbuildstepconfigwidget.h", "nimcompilerbuildstepconfigwidget.cpp", "nimcompilerbuildstepconfigwidget.ui",
"nimcompilercleanstep.h", "nimcompilercleanstep.cpp",
diff --git a/src/plugins/nim/nimconstants.h b/src/plugins/nim/nimconstants.h
index d37cdcedb7..552e01d4b3 100644
--- a/src/plugins/nim/nimconstants.h
+++ b/src/plugins/nim/nimconstants.h
@@ -39,19 +39,11 @@ const char C_EDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "Nim
const char C_NIMTOOLCHAIN_TYPEID[] = "Nim.NimToolChain";
const char C_NIMTOOLCHAIN_COMPILER_COMMAND_KEY[] = "Nim.NimToolChain.CompilerCommand";
-// NimRunConfiguration
-const QString C_NIMRUNCONFIGURATION_EXECUTABLE_KEY = QStringLiteral("Nim.NimRunConfiguration.Executable");
-
// NimProject
const char C_NIMPROJECT_EXCLUDEDFILES[] = "Nim.NimProjectExcludedFiles";
// NimBuildConfiguration
const char C_NIMBUILDCONFIGURATION_ID[] = "Nim.NimBuildConfiguration";
-const QString C_NIMBUILDCONFIGURATION_DISPLAY_KEY = QStringLiteral("Nim.NimBuildConfiguration.Display");
-const QString C_NIMBUILDCONFIGURATION_BUILDDIRECTORY_KEY = QStringLiteral("Nim.NimBuildConfiguration.BuildDirectory");
-
-// NimBuildConfigurationWidget
-const char C_NIMBUILDCONFIGURATIONWIDGET_DISPLAY[] = QT_TRANSLATE_NOOP("NimBuildConfigurationWidget","General");
// NimCompilerBuildStep
const char C_NIMCOMPILERBUILDSTEP_ID[] = "Nim.NimCompilerBuildStep";
diff --git a/src/plugins/nim/nimplugin.cpp b/src/plugins/nim/nimplugin.cpp
index 3afcb19b5f..d9ff187179 100644
--- a/src/plugins/nim/nimplugin.cpp
+++ b/src/plugins/nim/nimplugin.cpp
@@ -43,6 +43,7 @@
#include <coreplugin/fileiconprovider.h>
#include <projectexplorer/projectmanager.h>
#include <projectexplorer/toolchainmanager.h>
+#include <projectexplorer/runcontrol.h>
#include <texteditor/snippets/snippetprovider.h>
using namespace Utils;
@@ -66,6 +67,7 @@ public:
NimEditorFactory editorFactory;
NimBuildConfigurationFactory buildConfigFactory;
NimRunConfigurationFactory runConfigFactory;
+ SimpleRunWorkerFactory<SimpleTargetRunner, NimRunConfiguration> runWorkerFactory;
NimCompilerBuildStepFactory buildStepFactory;
NimCompilerCleanStepFactory cleanStepFactory;
NimCodeStyleSettingsPage codeStyleSettingsPage;
diff --git a/src/plugins/nim/project/nimbuildconfiguration.cpp b/src/plugins/nim/project/nimbuildconfiguration.cpp
index 46acf4881b..0827a29327 100644
--- a/src/plugins/nim/project/nimbuildconfiguration.cpp
+++ b/src/plugins/nim/project/nimbuildconfiguration.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "nimbuildconfiguration.h"
-#include "nimbuildconfigurationwidget.h"
#include "nimcompilerbuildstep.h"
#include "nimproject.h"
#include "nimbuildconfiguration.h"
@@ -43,6 +42,7 @@
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectmacroexpander.h>
#include <projectexplorer/target.h>
+#include <projectexplorer/projectconfigurationaspects.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
@@ -51,7 +51,7 @@ using namespace Utils;
namespace Nim {
-static FileName defaultBuildDirectory(const Kit *k,
+static FilePath defaultBuildDirectory(const Kit *k,
const QString &projectFilePath,
const QString &bc,
BuildConfiguration::BuildType buildType)
@@ -62,17 +62,18 @@ static FileName defaultBuildDirectory(const Kit *k,
QString buildDirectory = expander.expand(ProjectExplorerPlugin::buildDirectoryTemplate());
if (FileUtils::isAbsolutePath(buildDirectory))
- return FileName::fromString(buildDirectory);
+ return FilePath::fromString(buildDirectory);
- auto projectDir = FileName::fromString(projectFileInfo.absoluteDir().absolutePath());
- auto result = projectDir.appendPath(buildDirectory);
-
- return result;
+ auto projectDir = FilePath::fromString(projectFileInfo.absoluteDir().absolutePath());
+ return projectDir.pathAppended(buildDirectory);
}
NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
: BuildConfiguration(target, id)
{
+ setConfigWidgetDisplayName(tr("General"));
+ setConfigWidgetHasFrame(true);
+ setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory");
}
void NimBuildConfiguration::initialize(const BuildInfo &info)
@@ -105,7 +106,7 @@ void NimBuildConfiguration::initialize(const BuildInfo &info)
break;
}
nimCompilerBuildStep->setDefaultCompilerOptions(defaultOption);
- Utils::FileNameList nimFiles = project->nimFiles();
+ Utils::FilePathList nimFiles = project->nimFiles();
if (!nimFiles.isEmpty())
nimCompilerBuildStep->setTargetNimFile(nimFiles.first());
buildSteps->appendStep(nimCompilerBuildStep);
@@ -118,48 +119,20 @@ void NimBuildConfiguration::initialize(const BuildInfo &info)
}
}
-
-NamedWidget *NimBuildConfiguration::createConfigWidget()
-{
- return new NimBuildConfigurationWidget(this);
-}
-
BuildConfiguration::BuildType NimBuildConfiguration::buildType() const
{
return BuildConfiguration::Unknown;
}
-bool NimBuildConfiguration::fromMap(const QVariantMap &map)
-{
- if (!BuildConfiguration::fromMap(map))
- return false;
-
- const QString displayName = map[Constants::C_NIMBUILDCONFIGURATION_DISPLAY_KEY].toString();
- const QString buildDirectory = map[Constants::C_NIMBUILDCONFIGURATION_BUILDDIRECTORY_KEY].toString();
-
- setDisplayName(displayName);
- setBuildDirectory(FileName::fromString(buildDirectory));
-
- return true;
-}
-
-QVariantMap NimBuildConfiguration::toMap() const
-{
- QVariantMap result = BuildConfiguration::toMap();
- result[Constants::C_NIMBUILDCONFIGURATION_DISPLAY_KEY] = displayName();
- result[Constants::C_NIMBUILDCONFIGURATION_BUILDDIRECTORY_KEY] = buildDirectory().toString();
- return result;
-}
-
-FileName NimBuildConfiguration::cacheDirectory() const
+FilePath NimBuildConfiguration::cacheDirectory() const
{
- return buildDirectory().appendPath(QStringLiteral("nimcache"));
+ return buildDirectory().pathAppended("nimcache");
}
-FileName NimBuildConfiguration::outFilePath() const
+FilePath NimBuildConfiguration::outFilePath() const
{
const NimCompilerBuildStep *step = nimCompilerBuildStep();
- QTC_ASSERT(step, return FileName());
+ QTC_ASSERT(step, return FilePath());
return step->outFilePath();
}
diff --git a/src/plugins/nim/project/nimbuildconfiguration.h b/src/plugins/nim/project/nimbuildconfiguration.h
index 90175647ea..3c1819e01d 100644
--- a/src/plugins/nim/project/nimbuildconfiguration.h
+++ b/src/plugins/nim/project/nimbuildconfiguration.h
@@ -40,18 +40,14 @@ class NimBuildConfiguration : public ProjectExplorer::BuildConfiguration
NimBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
void initialize(const ProjectExplorer::BuildInfo &info) override;
- ProjectExplorer::NamedWidget *createConfigWidget() override;
ProjectExplorer::BuildConfiguration::BuildType buildType() const override;
- bool fromMap(const QVariantMap &map) override;
- QVariantMap toMap() const override;
-
public:
- Utils::FileName cacheDirectory() const;
- Utils::FileName outFilePath() const;
+ Utils::FilePath cacheDirectory() const;
+ Utils::FilePath outFilePath() const;
signals:
- void outFilePathChanged(const Utils::FileName &outFilePath);
+ void outFilePathChanged(const Utils::FilePath &outFilePath);
private:
void setupBuild(const ProjectExplorer::BuildInfo *info);
diff --git a/src/plugins/nim/project/nimbuildconfigurationwidget.cpp b/src/plugins/nim/project/nimbuildconfigurationwidget.cpp
deleted file mode 100644
index e4511eba31..0000000000
--- a/src/plugins/nim/project/nimbuildconfigurationwidget.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "nimbuildconfigurationwidget.h"
-#include "nimbuildconfiguration.h"
-
-#include "../nimconstants.h"
-
-#include <utils/pathchooser.h>
-#include <utils/detailswidget.h>
-
-#include <QVBoxLayout>
-#include <QFormLayout>
-#include <QComboBox>
-
-using namespace ProjectExplorer;
-using namespace Utils;
-
-namespace Nim {
-
-NimBuildConfigurationWidget::NimBuildConfigurationWidget(NimBuildConfiguration *bc)
- : NamedWidget(nullptr)
- , m_bc(bc)
-{
- // Build UI
- auto mainLayout = new QVBoxLayout(this);
- mainLayout->setMargin(0);
-
- auto detailsWidget = new DetailsWidget();
- detailsWidget->setState(DetailsWidget::NoSummary);
- mainLayout->addWidget(detailsWidget);
-
- auto detailsInnerWidget = new QWidget();
- auto formLayout = new QFormLayout(detailsInnerWidget);
- detailsWidget->setWidget(detailsInnerWidget);
-
- m_buildDirectoryChooser = new PathChooser();
- formLayout->addRow(tr("Build directory:"), m_buildDirectoryChooser);
-
- // Connect signals
- connect(bc, &NimBuildConfiguration::buildDirectoryChanged,
- this, &NimBuildConfigurationWidget::updateUi);
- connect(m_buildDirectoryChooser, &PathChooser::pathChanged,
- this, &NimBuildConfigurationWidget::onPathEdited);
-
- setDisplayName(tr(Constants::C_NIMBUILDCONFIGURATIONWIDGET_DISPLAY));
- updateUi();
-}
-
-NimBuildConfigurationWidget::~NimBuildConfigurationWidget() = default;
-
-void NimBuildConfigurationWidget::updateUi()
-{
- m_buildDirectoryChooser->setPath(m_bc->buildDirectory().toUserOutput());
-}
-
-void NimBuildConfigurationWidget::onPathEdited(const QString &path)
-{
- m_bc->setBuildDirectory(FileName::fromUserInput(path));
-}
-
-
-}
diff --git a/src/plugins/nim/project/nimbuildconfigurationwidget.h b/src/plugins/nim/project/nimbuildconfigurationwidget.h
deleted file mode 100644
index cb6251b3ec..0000000000
--- a/src/plugins/nim/project/nimbuildconfigurationwidget.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <projectexplorer/namedwidget.h>
-
-QT_BEGIN_NAMESPACE
-class QComboBox;
-class QLineEdit;
-class QPushButton;
-QT_END_NAMESPACE
-
-namespace Utils { class PathChooser; }
-
-namespace Nim {
-
-class NimBuildConfiguration;
-
-class NimBuildConfigurationWidget : public ProjectExplorer::NamedWidget
-{
- Q_OBJECT
-
-public:
- explicit NimBuildConfigurationWidget(NimBuildConfiguration *bc);
- ~NimBuildConfigurationWidget();
-
-private:
- void updateUi();
- void onPathEdited(const QString &path);
-
- NimBuildConfiguration *m_bc;
- Utils::PathChooser *m_buildDirectoryChooser;
-};
-
-}
diff --git a/src/plugins/nim/project/nimcompilerbuildstep.cpp b/src/plugins/nim/project/nimcompilerbuildstep.cpp
index a959ddbb1a..1ecc7e8c63 100644
--- a/src/plugins/nim/project/nimcompilerbuildstep.cpp
+++ b/src/plugins/nim/project/nimcompilerbuildstep.cpp
@@ -91,7 +91,7 @@ private:
Task task(type,
message,
- Utils::FileName::fromUserInput(filename),
+ Utils::FilePath::fromUserInput(filename),
lineNumber,
ProjectExplorer::Constants::TASK_CATEGORY_COMPILE);
emit addTask(task);
@@ -135,7 +135,7 @@ bool NimCompilerBuildStep::fromMap(const QVariantMap &map)
AbstractProcessStep::fromMap(map);
m_userCompilerOptions = map[Constants::C_NIMCOMPILERBUILDSTEP_USERCOMPILEROPTIONS].toString().split('|');
m_defaultOptions = static_cast<DefaultBuildOptions>(map[Constants::C_NIMCOMPILERBUILDSTEP_DEFAULTBUILDOPTIONS].toInt());
- m_targetNimFile = FileName::fromString(map[Constants::C_NIMCOMPILERBUILDSTEP_TARGETNIMFILE].toString());
+ m_targetNimFile = FilePath::fromString(map[Constants::C_NIMCOMPILERBUILDSTEP_TARGETNIMFILE].toString());
updateProcessParameters();
return true;
}
@@ -175,12 +175,12 @@ void NimCompilerBuildStep::setDefaultCompilerOptions(NimCompilerBuildStep::Defau
updateProcessParameters();
}
-FileName NimCompilerBuildStep::targetNimFile() const
+FilePath NimCompilerBuildStep::targetNimFile() const
{
return m_targetNimFile;
}
-void NimCompilerBuildStep::setTargetNimFile(const FileName &targetNimFile)
+void NimCompilerBuildStep::setTargetNimFile(const FilePath &targetNimFile)
{
if (targetNimFile == m_targetNimFile)
return;
@@ -189,12 +189,12 @@ void NimCompilerBuildStep::setTargetNimFile(const FileName &targetNimFile)
updateProcessParameters();
}
-FileName NimCompilerBuildStep::outFilePath() const
+FilePath NimCompilerBuildStep::outFilePath() const
{
return m_outFilePath;
}
-void NimCompilerBuildStep::setOutFilePath(const FileName &outFilePath)
+void NimCompilerBuildStep::setOutFilePath(const FilePath &outFilePath)
{
if (outFilePath == m_outFilePath)
return;
@@ -217,8 +217,7 @@ void NimCompilerBuildStep::updateOutFilePath()
auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration());
QTC_ASSERT(bc, return);
const QString targetName = Utils::HostOsInfo::withExecutableSuffix(m_targetNimFile.toFileInfo().baseName());
- FileName outFilePath = bc->buildDirectory().appendPath(targetName);
- setOutFilePath(outFilePath);
+ setOutFilePath(bc->buildDirectory().pathAppended(targetName));
}
void NimCompilerBuildStep::updateCommand()
@@ -226,16 +225,16 @@ void NimCompilerBuildStep::updateCommand()
QTC_ASSERT(target(), return);
QTC_ASSERT(target()->kit(), return);
Kit *kit = target()->kit();
- auto tc = dynamic_cast<NimToolChain*>(ToolChainKitInformation::toolChain(kit, Constants::C_NIMLANGUAGE_ID));
+ auto tc = dynamic_cast<NimToolChain*>(ToolChainKitAspect::toolChain(kit, Constants::C_NIMLANGUAGE_ID));
QTC_ASSERT(tc, return);
- processParameters()->setCommand(tc->compilerCommand().toString());
+ processParameters()->setCommand(tc->compilerCommand());
}
void NimCompilerBuildStep::updateWorkingDirectory()
{
auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration());
QTC_ASSERT(bc, return);
- processParameters()->setWorkingDirectory(bc->buildDirectory().toString());
+ processParameters()->setWorkingDirectory(bc->buildDirectory());
}
void NimCompilerBuildStep::updateArguments()
@@ -283,7 +282,7 @@ void NimCompilerBuildStep::updateTargetNimFile()
{
if (!m_targetNimFile.isEmpty())
return;
- const Utils::FileNameList nimFiles = static_cast<NimProject *>(project())->nimFiles();
+ const Utils::FilePathList nimFiles = static_cast<NimProject *>(project())->nimFiles();
if (!nimFiles.isEmpty())
setTargetNimFile(nimFiles.at(0));
}
@@ -317,19 +316,19 @@ void NimPlugin::testNimParser_data()
QTest::addColumn<OutputParserTester::Channel>("inputChannel");
QTest::addColumn<QString>("childStdOutLines");
QTest::addColumn<QString>("childStdErrLines");
- QTest::addColumn<QList<ProjectExplorer::Task> >("tasks");
+ QTest::addColumn<Tasks >("tasks");
QTest::addColumn<QString>("outputLines");
// negative tests
QTest::newRow("pass-through stdout")
<< "Sometext" << OutputParserTester::STDOUT
<< "Sometext\n" << QString()
- << QList<Task>()
+ << Tasks()
<< QString();
QTest::newRow("pass-through stderr")
<< "Sometext" << OutputParserTester::STDERR
<< QString() << "Sometext\n"
- << QList<Task>()
+ << Tasks()
<< QString();
// positive tests
@@ -337,9 +336,9 @@ void NimPlugin::testNimParser_data()
<< QString::fromLatin1("main.nim(23, 1) Error: undeclared identifier: 'x'")
<< OutputParserTester::STDERR
<< QString("") << QString("main.nim(23, 1) Error: undeclared identifier: 'x'\n")
- << QList<Task>({Task(Task::Error,
+ << Tasks({Task(Task::Error,
"Error: undeclared identifier: 'x'",
- Utils::FileName::fromUserInput("main.nim"), 23,
+ Utils::FilePath::fromUserInput("main.nim"), 23,
ProjectExplorer::Constants::TASK_CATEGORY_COMPILE)})
<< QString();
@@ -347,9 +346,9 @@ void NimPlugin::testNimParser_data()
<< QString::fromLatin1("lib/pure/parseopt.nim(56, 34) Warning: quoteIfContainsWhite is deprecated [Deprecated]")
<< OutputParserTester::STDERR
<< QString("") << QString("lib/pure/parseopt.nim(56, 34) Warning: quoteIfContainsWhite is deprecated [Deprecated]\n")
- << QList<Task>({Task(Task::Warning,
+ << Tasks({Task(Task::Warning,
"Warning: quoteIfContainsWhite is deprecated [Deprecated]",
- Utils::FileName::fromUserInput("lib/pure/parseopt.nim"), 56,
+ Utils::FilePath::fromUserInput("lib/pure/parseopt.nim"), 56,
ProjectExplorer::Constants::TASK_CATEGORY_COMPILE)})
<< QString();
}
@@ -360,7 +359,7 @@ void NimPlugin::testNimParser()
testbench.appendOutputParser(new NimParser);
QFETCH(QString, input);
QFETCH(OutputParserTester::Channel, inputChannel);
- QFETCH(QList<Task>, tasks);
+ QFETCH(Tasks, tasks);
QFETCH(QString, childStdOutLines);
QFETCH(QString, childStdErrLines);
QFETCH(QString, outputLines);
diff --git a/src/plugins/nim/project/nimcompilerbuildstep.h b/src/plugins/nim/project/nimcompilerbuildstep.h
index c370a6ba50..a866694c9a 100644
--- a/src/plugins/nim/project/nimcompilerbuildstep.h
+++ b/src/plugins/nim/project/nimcompilerbuildstep.h
@@ -53,20 +53,20 @@ public:
DefaultBuildOptions defaultCompilerOptions() const;
void setDefaultCompilerOptions(DefaultBuildOptions options);
- Utils::FileName targetNimFile() const;
- void setTargetNimFile(const Utils::FileName &targetNimFile);
+ Utils::FilePath targetNimFile() const;
+ void setTargetNimFile(const Utils::FilePath &targetNimFile);
- Utils::FileName outFilePath() const;
+ Utils::FilePath outFilePath() const;
signals:
void userCompilerOptionsChanged(const QStringList &options);
void defaultCompilerOptionsChanged(DefaultBuildOptions options);
- void targetNimFileChanged(const Utils::FileName &targetNimFile);
+ void targetNimFileChanged(const Utils::FilePath &targetNimFile);
void processParametersChanged();
- void outFilePathChanged(const Utils::FileName &outFilePath);
+ void outFilePathChanged(const Utils::FilePath &outFilePath);
private:
- void setOutFilePath(const Utils::FileName &outFilePath);
+ void setOutFilePath(const Utils::FilePath &outFilePath);
void updateOutFilePath();
void updateProcessParameters();
@@ -79,8 +79,8 @@ private:
DefaultBuildOptions m_defaultOptions;
QStringList m_userCompilerOptions;
- Utils::FileName m_targetNimFile;
- Utils::FileName m_outFilePath;
+ Utils::FilePath m_targetNimFile;
+ Utils::FilePath m_outFilePath;
};
class NimCompilerBuildStepFactory : public ProjectExplorer::BuildStepFactory
diff --git a/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp b/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp
index 600f6cf915..27acf21726 100644
--- a/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp
+++ b/src/plugins/nim/project/nimcompilerbuildstepconfigwidget.cpp
@@ -60,11 +60,11 @@ NimCompilerBuildStepConfigWidget::NimCompilerBuildStepConfigWidget(NimCompilerBu
this, &NimCompilerBuildStepConfigWidget::updateUi);
// Connect UI signals
- connect(m_ui->targetComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::activated),
+ connect(m_ui->targetComboBox, QOverload<int>::of(&QComboBox::activated),
this, &NimCompilerBuildStepConfigWidget::onTargetChanged);
connect(m_ui->additionalArgumentsLineEdit, &QLineEdit::textEdited,
this, &NimCompilerBuildStepConfigWidget::onAdditionalArgumentsTextEdited);
- connect(m_ui->defaultArgumentsComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::activated),
+ connect(m_ui->defaultArgumentsComboBox, QOverload<int>::of(&QComboBox::activated),
this, &NimCompilerBuildStepConfigWidget::onDefaultArgumentsComboBoxIndexChanged);
updateUi();
@@ -76,7 +76,7 @@ void NimCompilerBuildStepConfigWidget::onTargetChanged(int index)
{
Q_UNUSED(index);
auto data = m_ui->targetComboBox->currentData();
- FileName path = FileName::fromString(data.toString());
+ FilePath path = FilePath::fromString(data.toString());
m_buildStep->setTargetNimFile(path);
}
@@ -104,7 +104,7 @@ void NimCompilerBuildStepConfigWidget::updateCommandLineText()
ProcessParameters *parameters = m_buildStep->processParameters();
QStringList command;
- command << parameters->command();
+ command << parameters->command().toString();
command << parameters->arguments();
// Remove empty args
@@ -124,7 +124,7 @@ void NimCompilerBuildStepConfigWidget::updateTargetComboBox()
// Re enter the files
m_ui->targetComboBox->clear();
- foreach (const FileName &file, project->nimFiles())
+ foreach (const FilePath &file, project->nimFiles())
m_ui->targetComboBox->addItem(file.fileName(), file.toString());
const int index = m_ui->targetComboBox->findData(m_buildStep->targetNimFile().toString());
diff --git a/src/plugins/nim/project/nimcompilercleanstep.cpp b/src/plugins/nim/project/nimcompilercleanstep.cpp
index f07f501106..b802582108 100644
--- a/src/plugins/nim/project/nimcompilercleanstep.cpp
+++ b/src/plugins/nim/project/nimcompilercleanstep.cpp
@@ -54,7 +54,7 @@ BuildStepConfigWidget *NimCompilerCleanStep::createConfigWidget()
bool NimCompilerCleanStep::init()
{
- FileName buildDir = buildConfiguration()->buildDirectory();
+ FilePath buildDir = buildConfiguration()->buildDirectory();
bool result = buildDir.exists();
if (result)
m_buildDir = buildDir;
diff --git a/src/plugins/nim/project/nimcompilercleanstep.h b/src/plugins/nim/project/nimcompilercleanstep.h
index e250d88f45..2cbde61beb 100644
--- a/src/plugins/nim/project/nimcompilercleanstep.h
+++ b/src/plugins/nim/project/nimcompilercleanstep.h
@@ -48,7 +48,7 @@ private:
bool removeCacheDirectory();
bool removeOutFilePath();
- Utils::FileName m_buildDir;
+ Utils::FilePath m_buildDir;
};
class NimCompilerCleanStepFactory : public ProjectExplorer::BuildStepFactory
diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp
index 2af19e4d49..a6cad1657f 100644
--- a/src/plugins/nim/project/nimproject.cpp
+++ b/src/plugins/nim/project/nimproject.cpp
@@ -60,7 +60,7 @@ namespace Nim {
const int MIN_TIME_BETWEEN_PROJECT_SCANS = 4500;
-NimProject::NimProject(const FileName &fileName) : Project(Constants::C_NIM_MIMETYPE, fileName)
+NimProject::NimProject(const FilePath &fileName) : Project(Constants::C_NIM_MIMETYPE, fileName)
{
setId(Constants::C_NIMPROJECT_ID);
setDisplayName(fileName.toFileInfo().completeBaseName());
@@ -117,16 +117,16 @@ void NimProject::collectProjectFiles()
{
m_lastProjectScan.start();
QTC_ASSERT(!m_futureWatcher.future().isRunning(), return);
- FileName prjDir = projectDirectory();
+ FilePath prjDir = projectDirectory();
QFuture<QList<ProjectExplorer::FileNode *>> future = Utils::runAsync([prjDir,
excluded = m_excludedFiles] {
- return FileNode::scanForFiles(prjDir, [excluded](const FileName & fn) -> FileNode * {
+ return FileNode::scanForFiles(prjDir, [excluded](const FilePath & fn) -> FileNode * {
const QString fileName = fn.fileName();
if (excluded.contains(fn.toString())
|| fileName.endsWith(".nimproject", HostOsInfo::fileNameCaseSensitivity())
|| fileName.contains(".nimproject.user", HostOsInfo::fileNameCaseSensitivity()))
return nullptr;
- return new FileNode(fn, FileType::Source, false);
+ return new FileNode(fn, FileType::Source);
});
});
m_futureWatcher.setFuture(future);
@@ -150,11 +150,10 @@ void NimProject::updateProject()
emitParsingFinished(true);
}
-QList<Task> NimProject::projectIssues(const Kit *k) const
+Tasks NimProject::projectIssues(const Kit *k) const
{
- QList<Task> result = Project::projectIssues(k);
- auto tc = dynamic_cast<NimToolChain *>(ToolChainKitInformation::toolChain(k,
- Constants::C_NIMLANGUAGE_ID));
+ Tasks result = Project::projectIssues(k);
+ auto tc = dynamic_cast<NimToolChain *>(ToolChainKitAspect::toolChain(k, Constants::C_NIMLANGUAGE_ID));
if (!tc) {
result.append(createProjectTask(Task::TaskType::Error, tr("No Nim compiler set.")));
return result;
@@ -165,7 +164,7 @@ QList<Task> NimProject::projectIssues(const Kit *k) const
return result;
}
-FileNameList NimProject::nimFiles() const
+FilePathList NimProject::nimFiles() const
{
return files([](const ProjectExplorer::Node *n) {
return AllFiles(n) && n->filePath().endsWith(".nim");
diff --git a/src/plugins/nim/project/nimproject.h b/src/plugins/nim/project/nimproject.h
index 5670fbe533..d0143de2fd 100644
--- a/src/plugins/nim/project/nimproject.h
+++ b/src/plugins/nim/project/nimproject.h
@@ -39,10 +39,10 @@ class NimProject : public ProjectExplorer::Project
Q_OBJECT
public:
- explicit NimProject(const Utils::FileName &fileName);
+ explicit NimProject(const Utils::FilePath &fileName);
- QList<ProjectExplorer::Task> projectIssues(const ProjectExplorer::Kit *k) const final;
- Utils::FileNameList nimFiles() const;
+ ProjectExplorer::Tasks projectIssues(const ProjectExplorer::Kit *k) const final;
+ Utils::FilePathList nimFiles() const;
QVariantMap toMap() const final;
bool addFiles(const QStringList &filePaths);
diff --git a/src/plugins/nim/project/nimprojectnode.cpp b/src/plugins/nim/project/nimprojectnode.cpp
index 7604fb3a6d..6a6385b67e 100644
--- a/src/plugins/nim/project/nimprojectnode.cpp
+++ b/src/plugins/nim/project/nimprojectnode.cpp
@@ -32,25 +32,23 @@ using namespace Utils;
namespace Nim {
NimProjectNode::NimProjectNode(NimProject &project,
- const FileName &projectFilePath)
+ const FilePath &projectFilePath)
: ProjectNode(projectFilePath)
, m_project(project)
{}
bool NimProjectNode::supportsAction(ProjectAction action, const Node *node) const
{
- switch (node->nodeType()) {
- case NodeType::File:
+ if (node->asFileNode()) {
return action == ProjectAction::Rename
|| action == ProjectAction::RemoveFile;
- case NodeType::Folder:
- case NodeType::Project:
+ }
+ if (node->isFolderNodeType() || node->isProjectNodeType()) {
return action == ProjectAction::AddNewFile
|| action == ProjectAction::RemoveFile
|| action == ProjectAction::AddExistingFile;
- default:
- return ProjectNode::supportsAction(action, node);
}
+ return ProjectNode::supportsAction(action, node);
}
bool NimProjectNode::addFiles(const QStringList &filePaths, QStringList *)
diff --git a/src/plugins/nim/project/nimprojectnode.h b/src/plugins/nim/project/nimprojectnode.h
index 317d4be555..6a950bdf4f 100644
--- a/src/plugins/nim/project/nimprojectnode.h
+++ b/src/plugins/nim/project/nimprojectnode.h
@@ -27,7 +27,7 @@
#include <projectexplorer/projectnodes.h>
-namespace Utils { class FileName; }
+namespace Utils { class FilePath; }
namespace Nim {
@@ -36,7 +36,7 @@ class NimProject;
class NimProjectNode : public ProjectExplorer::ProjectNode
{
public:
- NimProjectNode(NimProject &project, const Utils::FileName &projectFilePath);
+ NimProjectNode(NimProject &project, const Utils::FilePath &projectFilePath);
bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override;
bool addFiles(const QStringList &filePaths, QStringList *) override;
diff --git a/src/plugins/nim/project/nimrunconfiguration.cpp b/src/plugins/nim/project/nimrunconfiguration.cpp
index c27cb75b54..7849f4dc19 100644
--- a/src/plugins/nim/project/nimrunconfiguration.cpp
+++ b/src/plugins/nim/project/nimrunconfiguration.cpp
@@ -30,6 +30,7 @@
#include <projectexplorer/localenvironmentaspect.h>
#include <projectexplorer/runconfigurationaspects.h>
+#include <projectexplorer/runcontrol.h>
#include <utils/environment.h>
@@ -44,12 +45,10 @@ namespace Nim {
NimRunConfiguration::NimRunConfiguration(Target *target, Core::Id id)
: RunConfiguration(target, id)
{
- auto envAspect = addAspect<LocalEnvironmentAspect>
- (target, LocalEnvironmentAspect::BaseEnvironmentModifier());
-
+ addAspect<LocalEnvironmentAspect>(target);
addAspect<ExecutableAspect>();
addAspect<ArgumentsAspect>();
- addAspect<WorkingDirectoryAspect>(envAspect);
+ addAspect<WorkingDirectoryAspect>();
addAspect<TerminalAspect>();
setDisplayName(tr("Current Build Target"));
@@ -67,9 +66,9 @@ void NimRunConfiguration::updateConfiguration()
QTC_ASSERT(buildConfiguration, return);
setActiveBuildConfiguration(buildConfiguration);
const QFileInfo outFileInfo = buildConfiguration->outFilePath().toFileInfo();
- aspect<ExecutableAspect>()->setExecutable(FileName::fromString(outFileInfo.absoluteFilePath()));
+ aspect<ExecutableAspect>()->setExecutable(FilePath::fromString(outFileInfo.absoluteFilePath()));
const QString workingDirectory = outFileInfo.absoluteDir().absolutePath();
- aspect<WorkingDirectoryAspect>()->setDefaultWorkingDirectory(FileName::fromString(workingDirectory));
+ aspect<WorkingDirectoryAspect>()->setDefaultWorkingDirectory(FilePath::fromString(workingDirectory));
}
void NimRunConfiguration::setActiveBuildConfiguration(NimBuildConfiguration *activeBuildConfiguration)
@@ -100,7 +99,6 @@ NimRunConfigurationFactory::NimRunConfigurationFactory() : FixedRunConfiguration
{
registerRunConfiguration<NimRunConfiguration>("Nim.NimRunConfiguration");
addSupportedProjectType(Constants::C_NIMPROJECT_ID);
- addRunWorkerFactory<SimpleTargetRunner>(ProjectExplorer::Constants::NORMAL_RUN_MODE);
}
} // Nim
diff --git a/src/plugins/nim/project/nimtoolchain.cpp b/src/plugins/nim/project/nimtoolchain.cpp
index 6687c1eb8c..3e7fcbef72 100644
--- a/src/plugins/nim/project/nimtoolchain.cpp
+++ b/src/plugins/nim/project/nimtoolchain.cpp
@@ -39,20 +39,20 @@ using namespace Utils;
namespace Nim {
-NimToolChain::NimToolChain(ToolChain::Detection d)
- : NimToolChain(Constants::C_NIMTOOLCHAIN_TYPEID, d)
+NimToolChain::NimToolChain()
+ : NimToolChain(Constants::C_NIMTOOLCHAIN_TYPEID)
{}
-NimToolChain::NimToolChain(Core::Id typeId, ToolChain::Detection d)
- : ToolChain(typeId, d)
- , m_compilerCommand(FileName())
+NimToolChain::NimToolChain(Core::Id typeId)
+ : ToolChain(typeId)
+ , m_compilerCommand(FilePath())
, m_version(std::make_tuple(-1,-1,-1))
{
setLanguage(Constants::C_NIMLANGUAGE_ID);
}
NimToolChain::NimToolChain(const NimToolChain &other)
- : ToolChain(other.typeId(), other.detection())
+ : ToolChain(other.typeId())
, m_compilerCommand(other.m_compilerCommand)
, m_version(other.m_version)
{
@@ -71,7 +71,7 @@ Abi NimToolChain::targetAbi() const
bool NimToolChain::isValid() const
{
- if (m_compilerCommand.isNull())
+ if (m_compilerCommand.isEmpty())
return false;
QFileInfo fi = compilerCommand().toFileInfo();
return fi.isExecutable();
@@ -102,7 +102,7 @@ ToolChain::BuiltInHeaderPathsRunner NimToolChain::createBuiltInHeaderPathsRunner
return ToolChain::BuiltInHeaderPathsRunner();
}
-HeaderPaths NimToolChain::builtInHeaderPaths(const QStringList &, const FileName &) const
+HeaderPaths NimToolChain::builtInHeaderPaths(const QStringList &, const FilePath &) const
{
return {};
}
@@ -113,19 +113,18 @@ void NimToolChain::addToEnvironment(Environment &env) const
env.prependOrSetPath(compilerCommand().parentDir().toString());
}
-QString NimToolChain::makeCommand(const Environment &env) const
+FilePath NimToolChain::makeCommand(const Environment &env) const
{
- QString make = "make";
- FileName tmp = env.searchInPath(make);
- return tmp.isEmpty() ? make : tmp.toString();
+ const FilePath tmp = env.searchInPath("make");
+ return tmp.isEmpty() ? FilePath::fromString("make") : tmp;
}
-FileName NimToolChain::compilerCommand() const
+FilePath NimToolChain::compilerCommand() const
{
return m_compilerCommand;
}
-void NimToolChain::setCompilerCommand(const FileName &compilerCommand)
+void NimToolChain::setCompilerCommand(const FilePath &compilerCommand)
{
m_compilerCommand = compilerCommand;
parseVersion(compilerCommand, m_version);
@@ -141,11 +140,6 @@ std::unique_ptr<ProjectExplorer::ToolChainConfigWidget> NimToolChain::createConf
return std::make_unique<NimToolChainConfigWidget>(this);
}
-ToolChain *NimToolChain::clone() const
-{
- return new NimToolChain(*this);
-}
-
QVariantMap NimToolChain::toMap() const
{
QVariantMap data = ToolChain::toMap();
@@ -167,11 +161,11 @@ bool NimToolChain::fromMap(const QVariantMap &data)
{
if (!ToolChain::fromMap(data))
return false;
- setCompilerCommand(FileName::fromString(data.value(Constants::C_NIMTOOLCHAIN_COMPILER_COMMAND_KEY).toString()));
+ setCompilerCommand(FilePath::fromString(data.value(Constants::C_NIMTOOLCHAIN_COMPILER_COMMAND_KEY).toString()));
return true;
}
-bool NimToolChain::parseVersion(const FileName &path, std::tuple<int, int, int> &result)
+bool NimToolChain::parseVersion(const FilePath &path, std::tuple<int, int, int> &result)
{
QProcess process;
process.start(path.toString(), {"--version"});
diff --git a/src/plugins/nim/project/nimtoolchain.h b/src/plugins/nim/project/nimtoolchain.h
index 1ebe381517..b35e073ccd 100644
--- a/src/plugins/nim/project/nimtoolchain.h
+++ b/src/plugins/nim/project/nimtoolchain.h
@@ -33,8 +33,8 @@ namespace Nim {
class NimToolChain : public ProjectExplorer::ToolChain
{
public:
- NimToolChain(Detection d);
- NimToolChain(Core::Id typeId, Detection d);
+ NimToolChain();
+ explicit NimToolChain(Core::Id typeId);
QString typeDisplayName() const override;
ProjectExplorer::Abi targetAbi() const override;
@@ -47,25 +47,24 @@ public:
BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override;
ProjectExplorer::HeaderPaths builtInHeaderPaths(const QStringList &flags,
- const Utils::FileName &sysRoot) const final;
+ const Utils::FilePath &sysRoot) const final;
void addToEnvironment(Utils::Environment &env) const final;
- QString makeCommand(const Utils::Environment &env) const final;
- Utils::FileName compilerCommand() const final;
+ Utils::FilePath makeCommand(const Utils::Environment &env) const final;
+ Utils::FilePath compilerCommand() const final;
QString compilerVersion() const;
- void setCompilerCommand(const Utils::FileName &compilerCommand);
+ void setCompilerCommand(const Utils::FilePath &compilerCommand);
ProjectExplorer::IOutputParser *outputParser() const final;
std::unique_ptr<ProjectExplorer::ToolChainConfigWidget> createConfigurationWidget() final;
- ProjectExplorer::ToolChain *clone() const final;
QVariantMap toMap() const final;
bool fromMap(const QVariantMap &data) final;
- static bool parseVersion(const Utils::FileName &path, std::tuple<int, int, int> &version);
+ static bool parseVersion(const Utils::FilePath &path, std::tuple<int, int, int> &version);
private:
NimToolChain(const NimToolChain &other);
- Utils::FileName m_compilerCommand;
+ Utils::FilePath m_compilerCommand;
std::tuple<int, int, int> m_version;
};
diff --git a/src/plugins/nim/project/nimtoolchainfactory.cpp b/src/plugins/nim/project/nimtoolchainfactory.cpp
index 0eaae567f6..5fc94c4926 100644
--- a/src/plugins/nim/project/nimtoolchainfactory.cpp
+++ b/src/plugins/nim/project/nimtoolchainfactory.cpp
@@ -43,39 +43,10 @@ namespace Nim {
NimToolChainFactory::NimToolChainFactory()
{
setDisplayName(tr("Nim"));
-}
-
-bool NimToolChainFactory::canCreate()
-{
- return true;
-}
-
-ToolChain *NimToolChainFactory::create(Core::Id l)
-{
- if (l != Constants::C_NIMLANGUAGE_ID)
- return nullptr;
- auto result = new NimToolChain(ToolChain::ManualDetection);
- result->setLanguage(l);
- return result;
-}
-
-bool NimToolChainFactory::canRestore(const QVariantMap &data)
-{
- return typeIdFromMap(data) == Constants::C_NIMTOOLCHAIN_TYPEID;
-}
-
-ToolChain *NimToolChainFactory::restore(const QVariantMap &data)
-{
- auto tc = new NimToolChain(ToolChain::AutoDetection);
- if (tc->fromMap(data))
- return tc;
- delete tc;
- return nullptr;
-}
-
-QSet<Core::Id> NimToolChainFactory::supportedLanguages() const
-{
- return {Constants::C_NIMLANGUAGE_ID};
+ setSupportedToolChainType(Constants::C_NIMTOOLCHAIN_TYPEID);
+ setSupportedLanguages({Constants::C_NIMLANGUAGE_ID});
+ setToolchainConstructor([] { return new NimToolChain; });
+ setUserCreatable(true);
}
QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alreadyKnown)
@@ -83,7 +54,7 @@ QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alr
QList<ToolChain *> result;
Environment systemEnvironment = Environment::systemEnvironment();
- const FileName compilerPath = systemEnvironment.searchInPath("nim");
+ const FilePath compilerPath = systemEnvironment.searchInPath("nim");
if (compilerPath.isEmpty())
return result;
@@ -95,17 +66,19 @@ QList<ToolChain *> NimToolChainFactory::autoDetect(const QList<ToolChain *> &alr
if (!result.empty())
return result;
- auto tc = new NimToolChain(ToolChain::AutoDetection);
+ auto tc = new NimToolChain;
+ tc->setDetection(ToolChain::AutoDetection);
tc->setCompilerCommand(compilerPath);
result.append(tc);
return result;
}
-QList<ToolChain *> NimToolChainFactory::autoDetect(const FileName &compilerPath, const Core::Id &language)
+QList<ToolChain *> NimToolChainFactory::autoDetect(const FilePath &compilerPath, const Core::Id &language)
{
QList<ToolChain *> result;
if (language == Constants::C_NIMLANGUAGE_ID) {
- auto tc = new NimToolChain(ToolChain::ManualDetection);
+ auto tc = new NimToolChain;
+ tc->setDetection(ToolChain::ManualDetection); // FIXME: sure?
tc->setCompilerCommand(compilerPath);
result.append(tc);
}
@@ -170,7 +143,7 @@ void NimToolChainConfigWidget::onCompilerCommandChanged(const QString &path)
{
auto tc = static_cast<NimToolChain *>(toolChain());
Q_ASSERT(tc);
- tc->setCompilerCommand(FileName::fromString(path));
+ tc->setCompilerCommand(FilePath::fromString(path));
fillUI();
}
diff --git a/src/plugins/nim/project/nimtoolchainfactory.h b/src/plugins/nim/project/nimtoolchainfactory.h
index 4ba0a028ad..70a49cbb37 100644
--- a/src/plugins/nim/project/nimtoolchainfactory.h
+++ b/src/plugins/nim/project/nimtoolchainfactory.h
@@ -41,13 +41,8 @@ class NimToolChainFactory : public ProjectExplorer::ToolChainFactory
public:
NimToolChainFactory();
- bool canCreate() final;
- ProjectExplorer::ToolChain *create(Core::Id l) final;
- bool canRestore(const QVariantMap &data) final;
- ProjectExplorer::ToolChain *restore(const QVariantMap &data) final;
- QSet<Core::Id> supportedLanguages() const final;
QList<ProjectExplorer::ToolChain *> autoDetect(const QList<ProjectExplorer::ToolChain *> &alreadyKnown) final;
- QList<ProjectExplorer::ToolChain *> autoDetect(const Utils::FileName &compilerPath, const Core::Id &language) final;
+ QList<ProjectExplorer::ToolChain *> autoDetect(const Utils::FilePath &compilerPath, const Core::Id &language) final;
};
class NimToolChainConfigWidget : public ProjectExplorer::ToolChainConfigWidget
diff --git a/src/plugins/nim/settings/nimtoolssettingspage.cpp b/src/plugins/nim/settings/nimtoolssettingspage.cpp
index b658917395..05187f869b 100644
--- a/src/plugins/nim/settings/nimtoolssettingspage.cpp
+++ b/src/plugins/nim/settings/nimtoolssettingspage.cpp
@@ -32,9 +32,8 @@
namespace Nim {
-NimToolsSettingsWidget::NimToolsSettingsWidget(NimSettings *settings, QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::NimToolsSettingsWidget)
+NimToolsSettingsWidget::NimToolsSettingsWidget(NimSettings *settings)
+ : ui(new Ui::NimToolsSettingsWidget)
, m_settings(settings)
{
ui->setupUi(this);
@@ -56,9 +55,8 @@ void NimToolsSettingsWidget::setCommand(const QString &filename)
ui->pathWidget->setPath(filename);
}
-NimToolsSettingsPage::NimToolsSettingsPage(NimSettings *settings, QWidget *parent)
- : Core::IOptionsPage(parent)
- , m_settings(settings)
+NimToolsSettingsPage::NimToolsSettingsPage(NimSettings *settings)
+ : m_settings(settings)
{
setId(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_ID);
setDisplayName(tr(Nim::Constants::C_NIMTOOLSSETTINGSPAGE_DISPLAY));
diff --git a/src/plugins/nim/settings/nimtoolssettingspage.h b/src/plugins/nim/settings/nimtoolssettingspage.h
index 4a19ed00aa..e0de799960 100644
--- a/src/plugins/nim/settings/nimtoolssettingspage.h
+++ b/src/plugins/nim/settings/nimtoolssettingspage.h
@@ -43,7 +43,7 @@ class NimToolsSettingsWidget : public QWidget
Q_OBJECT
public:
- explicit NimToolsSettingsWidget(NimSettings *settings, QWidget *parent = nullptr);
+ explicit NimToolsSettingsWidget(NimSettings *settings);
~NimToolsSettingsWidget();
@@ -60,7 +60,7 @@ class NimToolsSettingsPage : public Core::IOptionsPage
Q_OBJECT
public:
- NimToolsSettingsPage(NimSettings *settings, QWidget *parent = nullptr);
+ NimToolsSettingsPage(NimSettings *settings);
~NimToolsSettingsPage();
diff --git a/src/plugins/nim/suggest/nimsuggestcache.cpp b/src/plugins/nim/suggest/nimsuggestcache.cpp
index 6953883608..dafeffb39e 100644
--- a/src/plugins/nim/suggest/nimsuggestcache.cpp
+++ b/src/plugins/nim/suggest/nimsuggestcache.cpp
@@ -42,7 +42,7 @@ NimSuggestCache &NimSuggestCache::instance()
NimSuggestCache::~NimSuggestCache() = default;
-NimSuggest *NimSuggestCache::get(const Utils::FileName &filename)
+NimSuggest *NimSuggestCache::get(const Utils::FilePath &filename)
{
auto it = m_nimSuggestInstances.find(filename);
if (it == m_nimSuggestInstances.end()) {
diff --git a/src/plugins/nim/suggest/nimsuggestcache.h b/src/plugins/nim/suggest/nimsuggestcache.h
index c7b632e82e..cccd136b46 100644
--- a/src/plugins/nim/suggest/nimsuggestcache.h
+++ b/src/plugins/nim/suggest/nimsuggestcache.h
@@ -45,7 +45,7 @@ class NimSuggestCache : public QObject
public:
static NimSuggestCache &instance();
- NimSuggest *get(const Utils::FileName &filename);
+ NimSuggest *get(const Utils::FilePath &filename);
QString executablePath() const;
void setExecutablePath(const QString &path);
@@ -57,7 +57,7 @@ private:
void onEditorOpened(Core::IEditor *editor);
void onEditorClosed(Core::IEditor *editor);
- std::unordered_map<Utils::FileName, std::unique_ptr<Suggest::NimSuggest>> m_nimSuggestInstances;
+ std::unordered_map<Utils::FilePath, std::unique_ptr<Suggest::NimSuggest>> m_nimSuggestInstances;
QString m_executablePath;
};
diff --git a/src/plugins/nim/suggest/server.cpp b/src/plugins/nim/suggest/server.cpp
index 862513f108..8e9b79b827 100644
--- a/src/plugins/nim/suggest/server.cpp
+++ b/src/plugins/nim/suggest/server.cpp
@@ -30,8 +30,8 @@ namespace Suggest {
NimSuggestServer::NimSuggestServer(QObject *parent) : QObject(parent)
{
- connect(&m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>
- (&QProcess::finished), this, &NimSuggestServer::onFinished);
+ connect(&m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
+ this, &NimSuggestServer::onFinished);
connect(&m_process, &QProcess::started, this, &NimSuggestServer::onStarted);
connect(&m_process, &QProcess::readyReadStandardOutput, this,
&NimSuggestServer::onStandardOutputAvailable);
@@ -69,8 +69,8 @@ bool NimSuggestServer::start(const QString &executablePath,
void NimSuggestServer::kill()
{
- disconnect(&m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>
- (&QProcess::finished), this, &NimSuggestServer::onFinished);
+ disconnect(&m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
+ this, &NimSuggestServer::onFinished);
m_process.kill();
m_process.waitForFinished();
clearState();