diff --git a/doc/src/editors/creator-beautifier.qdoc b/doc/src/editors/creator-beautifier.qdoc index 308aaf40a80..b8f7f36db55 100644 --- a/doc/src/editors/creator-beautifier.qdoc +++ b/doc/src/editors/creator-beautifier.qdoc @@ -117,6 +117,11 @@ selected tool. This option is available for Artistic Style and Uncrustify. + \li Select the \uicontrol {Use specific config file} option to + use the specified file as the configuration file for the + selected tool. This option is available for Artistic Style + and Uncrustify. + \li Select the \uicontrol {Use file in $HOME} option to use the specified file in the user's home directory as the configuration file for the selected tool. This option is diff --git a/src/plugins/beautifier/artisticstyle/artisticstyle.cpp b/src/plugins/beautifier/artisticstyle/artisticstyle.cpp index 3a347478387..c28d1037fe5 100644 --- a/src/plugins/beautifier/artisticstyle/artisticstyle.cpp +++ b/src/plugins/beautifier/artisticstyle/artisticstyle.cpp @@ -129,6 +129,12 @@ QString ArtisticStyle::configurationFile() const } } + if (m_settings->useSpecificConfigFile()) { + const Utils::FileName file = m_settings->specificConfigFile(); + if (file.exists()) + return file.toUserOutput(); + } + if (m_settings->useHomeFile()) { const QDir homeDirectory = QDir::home(); QString file = homeDirectory.filePath(".astylerc"); diff --git a/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.cpp b/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.cpp index a2086def126..95afae7aea2 100644 --- a/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.cpp +++ b/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.cpp @@ -48,6 +48,8 @@ ArtisticStyleOptionsPageWidget::ArtisticStyleOptionsPageWidget(ArtisticStyleSett ui->setupUi(this); ui->useHomeFile->setText(ui->useHomeFile->text().replace( "HOME", QDir::toNativeSeparators(QDir::home().absolutePath()))); + ui->specificConfigFile->setExpectedKind(Utils::PathChooser::File); + ui->specificConfigFile->setPromptDialogFilter(tr("AStyle (*.astylerc)")); ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand); ui->command->setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle( ArtisticStyle::tr(Constants::ArtisticStyle::DISPLAY_NAME))); @@ -65,6 +67,8 @@ void ArtisticStyleOptionsPageWidget::restore() ui->command->setPath(m_settings->command()); ui->mime->setText(m_settings->supportedMimeTypesAsString()); ui->useOtherFiles->setChecked(m_settings->useOtherFiles()); + ui->useSpecificConfigFile->setChecked(m_settings->useSpecificConfigFile()); + ui->specificConfigFile->setFileName(m_settings->specificConfigFile()); ui->useHomeFile->setChecked(m_settings->useHomeFile()); ui->useCustomStyle->setChecked(m_settings->useCustomStyle()); ui->configurations->setCurrentConfiguration(m_settings->customStyle()); @@ -75,6 +79,8 @@ void ArtisticStyleOptionsPageWidget::apply() m_settings->setCommand(ui->command->path()); m_settings->setSupportedMimeTypes(ui->mime->text()); m_settings->setUseOtherFiles(ui->useOtherFiles->isChecked()); + m_settings->setUseSpecificConfigFile(ui->useSpecificConfigFile->isChecked()); + m_settings->setSpecificConfigFile(ui->specificConfigFile->fileName()); m_settings->setUseHomeFile(ui->useHomeFile->isChecked()); m_settings->setUseCustomStyle(ui->useCustomStyle->isChecked()); m_settings->setCustomStyle(ui->configurations->currentConfiguration()); diff --git a/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.ui b/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.ui index 2697a934485..99ec88b4b69 100644 --- a/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.ui +++ b/src/plugins/beautifier/artisticstyle/artisticstyleoptionspage.ui @@ -56,6 +56,20 @@ + + + + + + Use specific config file: + + + + + + + + diff --git a/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp b/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp index da73a5a47ee..c6b9c60f07d 100644 --- a/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp +++ b/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp @@ -45,10 +45,12 @@ namespace Internal { namespace ArtisticStyle { 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 USE_OTHER_FILES[] = "useOtherFiles"; +const char USE_SPECIFIC_CONFIG_FILE[] = "useSpecificConfigFile"; +const char SPECIFIC_CONFIG_FILE[] = "specificConfigFile"; +const char USE_HOME_FILE[] = "useHomeFile"; +const char USE_CUSTOM_STYLE[] = "useCustomStyle"; +const char CUSTOM_STYLE[] = "customStyle"; } ArtisticStyleSettings::ArtisticStyleSettings() : @@ -59,6 +61,8 @@ ArtisticStyleSettings::ArtisticStyleSettings() : setCommand("astyle"); m_settings.insert(USE_OTHER_FILES, QVariant(true)); + m_settings.insert(USE_SPECIFIC_CONFIG_FILE, QVariant(false)); + m_settings.insert(SPECIFIC_CONFIG_FILE, QVariant()); m_settings.insert(USE_HOME_FILE, QVariant(false)); m_settings.insert(USE_CUSTOM_STYLE, QVariant(false)); m_settings.insert(CUSTOM_STYLE, QVariant()); @@ -117,6 +121,26 @@ void ArtisticStyleSettings::setUseOtherFiles(bool useOtherFiles) m_settings.insert(USE_OTHER_FILES, QVariant(useOtherFiles)); } +bool ArtisticStyleSettings::useSpecificConfigFile() const +{ + return m_settings.value(USE_SPECIFIC_CONFIG_FILE).toBool(); +} + +void ArtisticStyleSettings::setUseSpecificConfigFile(bool useSpecificConfigFile) +{ + m_settings.insert(USE_SPECIFIC_CONFIG_FILE, QVariant(useSpecificConfigFile)); +} + +Utils::FileName ArtisticStyleSettings::specificConfigFile() const +{ + return Utils::FileName::fromString(m_settings.value(SPECIFIC_CONFIG_FILE).toString()); +} + +void ArtisticStyleSettings::setSpecificConfigFile(const Utils::FileName &specificConfigFile) +{ + m_settings.insert(SPECIFIC_CONFIG_FILE, QVariant(specificConfigFile.toString())); +} + bool ArtisticStyleSettings::useHomeFile() const { return m_settings.value(USE_HOME_FILE).toBool(); diff --git a/src/plugins/beautifier/artisticstyle/artisticstylesettings.h b/src/plugins/beautifier/artisticstyle/artisticstylesettings.h index 3f5cd4cc17a..9e3c60e435a 100644 --- a/src/plugins/beautifier/artisticstyle/artisticstylesettings.h +++ b/src/plugins/beautifier/artisticstyle/artisticstylesettings.h @@ -27,6 +27,8 @@ #include "../abstractsettings.h" +#include + #include #include @@ -51,6 +53,12 @@ public: bool useOtherFiles() const; void setUseOtherFiles(bool useOtherFiles); + bool useSpecificConfigFile() const; + void setUseSpecificConfigFile(bool useSpecificConfigFile); + + Utils::FileName specificConfigFile() const; + void setSpecificConfigFile(const Utils::FileName &specificConfigFile); + bool useHomeFile() const; void setUseHomeFile(bool useHomeFile);