diff --git a/src/plugins/beautifier/uncrustify/uncrustify.cpp b/src/plugins/beautifier/uncrustify/uncrustify.cpp
index 3b61d3a9dc5..c10524dc99b 100644
--- a/src/plugins/beautifier/uncrustify/uncrustify.cpp
+++ b/src/plugins/beautifier/uncrustify/uncrustify.cpp
@@ -168,6 +168,12 @@ QString Uncrustify::configurationFile() const
}
}
+ if (m_settings->useSpecificConfigFile()) {
+ const Utils::FileName file = m_settings->specificConfigFile();
+ if (file.exists())
+ return file.toString();
+ }
+
if (m_settings->useHomeFile()) {
const QString file = QDir::home().filePath("uncrustify.cfg");
if (QFile::exists(file))
diff --git a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp
index 72687b70f4a..96f040c9906 100644
--- a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp
+++ b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp
@@ -50,6 +50,10 @@ UncrustifyOptionsPageWidget::UncrustifyOptionsPageWidget(UncrustifySettings *set
ui->setupUi(this);
ui->useHomeFile->setText(ui->useHomeFile->text().replace(
"HOME", QDir::toNativeSeparators(QDir::home().absolutePath())));
+ ui->uncrusifyFilePath->setExpectedKind(Utils::PathChooser::File);
+ ui->uncrusifyFilePath->setPromptDialogFilter(tr("Uncrustify file (*.cfg)"));
+ ui->uncrusifyFilePath->setFileName(Utils::FileName::fromString(QDir::toNativeSeparators(QDir::home().absoluteFilePath("uncrustify.cfg"))));
+
ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand);
ui->command->setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle(
Uncrustify::tr(Constants::Uncrustify::DISPLAY_NAME)));
@@ -68,6 +72,8 @@ void UncrustifyOptionsPageWidget::restore()
ui->mime->setText(m_settings->supportedMimeTypesAsString());
ui->useOtherFiles->setChecked(m_settings->useOtherFiles());
ui->useHomeFile->setChecked(m_settings->useHomeFile());
+ ui->useSpecificFile->setChecked(m_settings->useSpecificConfigFile());
+ ui->uncrusifyFilePath->setFileName(m_settings->specificConfigFile());
ui->useCustomStyle->setChecked(m_settings->useCustomStyle());
ui->configurations->setCurrentConfiguration(m_settings->customStyle());
ui->formatEntireFileFallback->setChecked(m_settings->formatEntireFileFallback());
@@ -79,6 +85,8 @@ void UncrustifyOptionsPageWidget::apply()
m_settings->setSupportedMimeTypes(ui->mime->text());
m_settings->setUseOtherFiles(ui->useOtherFiles->isChecked());
m_settings->setUseHomeFile(ui->useHomeFile->isChecked());
+ m_settings->setUseSpecificConfigFile(ui->useSpecificFile->isChecked());
+ m_settings->setSpecificConfigFile(ui->uncrusifyFilePath->fileName());
m_settings->setUseCustomStyle(ui->useCustomStyle->isChecked());
m_settings->setCustomStyle(ui->configurations->currentConfiguration());
m_settings->setFormatEntireFileFallback(ui->formatEntireFileFallback->isChecked());
diff --git a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui
index d1819e8bcef..190f9dd8ecc 100644
--- a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui
+++ b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui
@@ -56,6 +56,20 @@
+ -
+
+
-
+
+
+ Use file specific uncrustify.cfg
+
+
+
+ -
+
+
+
+
-
@@ -122,6 +136,8 @@
mime
useOtherFiles
+ useSpecificFile
+ uncrusifyFilePath
useHomeFile
useCustomStyle
formatEntireFileFallback
diff --git a/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp b/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp
index 8073901498b..20b134d1223 100644
--- a/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp
+++ b/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp
@@ -44,11 +44,13 @@ namespace Internal {
namespace Uncrustify {
namespace {
-const char USE_OTHER_FILES[] = "useOtherFiles";
-const char USE_HOME_FILE[] = "useHomeFile";
-const char USE_CUSTOM_STYLE[] = "useCustomStyle";
-const char CUSTOM_STYLE[] = "customStyle";
-const char FORMAT_ENTIRE_FILE_FALLBACK[] = "formatEntireFileFallback";
+const char USE_OTHER_FILES[] = "useOtherFiles";
+const char USE_HOME_FILE[] = "useHomeFile";
+const char USE_SPECIFIC_CONFIG_FILE_PATH[] = "useSpecificConfigFile";
+const char SPECIFIC_CONFIG_FILE_PATH[] = "specificConfigFile";
+const char USE_CUSTOM_STYLE[] = "useCustomStyle";
+const char CUSTOM_STYLE[] = "customStyle";
+const char FORMAT_ENTIRE_FILE_FALLBACK[] = "formatEntireFileFallback";
}
UncrustifySettings::UncrustifySettings() :
@@ -62,8 +64,10 @@ UncrustifySettings::UncrustifySettings() :
m_settings.insert(USE_OTHER_FILES, QVariant(true));
m_settings.insert(USE_HOME_FILE, QVariant(false));
m_settings.insert(USE_CUSTOM_STYLE, QVariant(false));
+ m_settings.insert(USE_SPECIFIC_CONFIG_FILE_PATH, QVariant(false));
m_settings.insert(CUSTOM_STYLE, QVariant());
m_settings.insert(FORMAT_ENTIRE_FILE_FALLBACK, QVariant(true));
+ m_settings.insert(SPECIFIC_CONFIG_FILE_PATH, QVariant());
read();
}
@@ -87,6 +91,26 @@ void UncrustifySettings::setUseHomeFile(bool useHomeFile)
m_settings.insert(USE_HOME_FILE, QVariant(useHomeFile));
}
+Utils::FileName UncrustifySettings::specificConfigFile() const
+{
+ return Utils::FileName::fromString(m_settings.value(SPECIFIC_CONFIG_FILE_PATH).toString());
+}
+
+void UncrustifySettings::setSpecificConfigFile(const Utils::FileName &filePath)
+{
+ m_settings.insert(SPECIFIC_CONFIG_FILE_PATH, QVariant(filePath.toString()));
+}
+
+bool UncrustifySettings::useSpecificConfigFile() const
+{
+ return m_settings.value(USE_SPECIFIC_CONFIG_FILE_PATH).toBool();
+}
+
+void UncrustifySettings::setUseSpecificConfigFile(bool useConfigFile)
+{
+ m_settings.insert(USE_SPECIFIC_CONFIG_FILE_PATH, QVariant(useConfigFile));
+}
+
bool UncrustifySettings::useCustomStyle() const
{
return m_settings.value(USE_CUSTOM_STYLE).toBool();
diff --git a/src/plugins/beautifier/uncrustify/uncrustifysettings.h b/src/plugins/beautifier/uncrustify/uncrustifysettings.h
index ac811840b6b..8b21db84f93 100644
--- a/src/plugins/beautifier/uncrustify/uncrustifysettings.h
+++ b/src/plugins/beautifier/uncrustify/uncrustifysettings.h
@@ -26,7 +26,7 @@
#pragma once
#include "../abstractsettings.h"
-
+#include
#include
namespace Beautifier {
@@ -60,6 +60,12 @@ public:
void updateVersion() override;
+ Utils::FileName specificConfigFile() const;
+ void setSpecificConfigFile(const Utils::FileName &filePath);
+
+ bool useSpecificConfigFile() const;
+ void setUseSpecificConfigFile(bool useConfigFile);
+
private:
QProcess m_versionProcess;
void parseVersionProcessResult(int exitCode, QProcess::ExitStatus exitStatus);