Beautifier: Modernize, code style, and clean up

Use nullptr and range based for loops, unify initializer list code
style, remove superfluous includes, make private slots private methods,
get rid of QLatin1(Char|String), use initializer lists and some minor
code style issues.

Change-Id: I94ba10fc96bb628239364a8201bde98a66b2c4c1
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
Lorenz Haas
2016-04-21 21:08:57 +02:00
parent d25b88c304
commit 5b3f36184b
31 changed files with 345 additions and 447 deletions

View File

@@ -31,7 +31,6 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <QDir>
#include <QFile> #include <QFile>
#include <QFileInfo> #include <QFileInfo>
#include <QXmlStreamReader> #include <QXmlStreamReader>
@@ -39,13 +38,11 @@
namespace Beautifier { namespace Beautifier {
namespace Internal { namespace Internal {
AbstractSettings::AbstractSettings(const QString &name, const QString &ending) AbstractSettings::AbstractSettings(const QString &name, const QString &ending) :
: m_version(0) m_ending(ending),
, m_ending(ending) m_styleDir(Core::ICore::userResourcePath() + '/' + Beautifier::Constants::SETTINGS_DIRNAME
, m_styleDir(Core::ICore::userResourcePath() + QLatin1Char('/') + '/' + name),
+ QLatin1String(Beautifier::Constants::SETTINGS_DIRNAME) + QLatin1Char('/') m_name(name)
+ name)
, m_name(name)
{ {
} }
@@ -163,14 +160,14 @@ void AbstractSettings::save()
{ {
// Save settings, except styles // Save settings, except styles
QSettings *s = Core::ICore::settings(); QSettings *s = Core::ICore::settings();
s->beginGroup(QLatin1String(Constants::SETTINGS_GROUP)); s->beginGroup(Constants::SETTINGS_GROUP);
s->beginGroup(m_name); s->beginGroup(m_name);
QMap<QString, QVariant>::const_iterator iSettings = m_settings.constBegin(); QMap<QString, QVariant>::const_iterator iSettings = m_settings.constBegin();
while (iSettings != m_settings.constEnd()) { while (iSettings != m_settings.constEnd()) {
s->setValue(iSettings.key(), iSettings.value()); s->setValue(iSettings.key(), iSettings.value());
++iSettings; ++iSettings;
} }
s->setValue(QLatin1String("command"), m_command); s->setValue("command", m_command);
s->endGroup(); s->endGroup();
s->endGroup(); s->endGroup();
@@ -230,11 +227,11 @@ void AbstractSettings::read()
{ {
// Read settings, except styles // Read settings, except styles
QSettings *s = Core::ICore::settings(); QSettings *s = Core::ICore::settings();
s->beginGroup(QLatin1String(Constants::SETTINGS_GROUP)); s->beginGroup(Constants::SETTINGS_GROUP);
s->beginGroup(m_name); s->beginGroup(m_name);
const QStringList keys = s->allKeys(); const QStringList keys = s->allKeys();
foreach (const QString &key, keys) { for (const QString &key : keys) {
if (key == QLatin1String("command")) if (key == "command")
setCommand(s->value(key).toString()); setCommand(s->value(key).toString());
else if (m_settings.contains(key)) else if (m_settings.contains(key))
m_settings[key] = s->value(key); m_settings[key] = s->value(key);
@@ -270,7 +267,7 @@ void AbstractSettings::readDocumentation()
QXmlStreamReader xml(&file); QXmlStreamReader xml(&file);
if (!xml.readNextStartElement()) if (!xml.readNextStartElement())
return; return;
if (xml.name() != QLatin1String(Constants::DOCUMENTATION_XMLROOT)) { if (xml.name() != Constants::DOCUMENTATION_XMLROOT) {
BeautifierPlugin::showError(tr("The file \"%1\" is not a valid documentation file.") BeautifierPlugin::showError(tr("The file \"%1\" is not a valid documentation file.")
.arg(filename)); .arg(filename));
return; return;
@@ -285,16 +282,16 @@ void AbstractSettings::readDocumentation()
while (!(xml.atEnd() || xml.hasError())) { while (!(xml.atEnd() || xml.hasError())) {
if (xml.readNext() == QXmlStreamReader::StartElement) { if (xml.readNext() == QXmlStreamReader::StartElement) {
const QStringRef &name = xml.name(); const QStringRef &name = xml.name();
if (name == QLatin1String(Constants::DOCUMENTATION_XMLENTRY)) { if (name == Constants::DOCUMENTATION_XMLENTRY) {
keys.clear(); keys.clear();
} else if (name == QLatin1String(Constants::DOCUMENTATION_XMLKEY)) { } else if (name == Constants::DOCUMENTATION_XMLKEY) {
if (xml.readNext() == QXmlStreamReader::Characters) if (xml.readNext() == QXmlStreamReader::Characters)
keys << xml.text().toString(); keys << xml.text().toString();
} else if (name == QLatin1String(Constants::DOCUMENTATION_XMLDOC)) { } else if (name == Constants::DOCUMENTATION_XMLDOC) {
if (xml.readNext() == QXmlStreamReader::Characters) { if (xml.readNext() == QXmlStreamReader::Characters) {
m_docu << xml.text().toString(); m_docu << xml.text().toString();
const int index = m_docu.size() - 1; const int index = m_docu.size() - 1;
foreach (const QString &key, keys) for (const QString &key : keys)
m_options.insert(key, index); m_options.insert(key, index);
} }
} }
@@ -313,9 +310,9 @@ void AbstractSettings::readStyles()
return; return;
const QStringList files const QStringList files
= m_styleDir.entryList(QStringList() << QLatin1Char('*') + m_ending, = m_styleDir.entryList({'*' + m_ending},
QDir::Files | QDir::Readable | QDir::NoDotAndDotDot); QDir::Files | QDir::Readable | QDir::NoDotAndDotDot);
foreach (const QString &filename, files) { for (const QString &filename : files) {
// do not allow empty file names // do not allow empty file names
if (filename == m_ending) if (filename == m_ending)
continue; continue;

View File

@@ -71,7 +71,7 @@ public:
protected: protected:
QMap<QString, QString> m_styles; QMap<QString, QString> m_styles;
QMap<QString, QVariant> m_settings; QMap<QString, QVariant> m_settings;
int m_version; int m_version = 0;
QString m_ending; QString m_ending;
QDir m_styleDir; QDir m_styleDir;

View File

@@ -40,8 +40,6 @@
#include <coreplugin/actionmanager/command.h> #include <coreplugin/actionmanager/command.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <cppeditor/cppeditorconstants.h> #include <cppeditor/cppeditorconstants.h>
#include <projectexplorer/projecttree.h> #include <projectexplorer/projecttree.h>
@@ -71,7 +69,7 @@ ArtisticStyle::~ArtisticStyle()
bool ArtisticStyle::initialize() bool ArtisticStyle::initialize()
{ {
Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::ArtisticStyle::MENU_ID); Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::ArtisticStyle::MENU_ID);
menu->menu()->setTitle(QLatin1String(Constants::ArtisticStyle::DISPLAY_NAME)); menu->menu()->setTitle(Constants::ArtisticStyle::DISPLAY_NAME);
m_formatFile = new QAction(BeautifierPlugin::msgFormatCurrentFile(), this); m_formatFile = new QAction(BeautifierPlugin::msgFormatCurrentFile(), this);
menu->addAction(Core::ActionManager::registerAction(m_formatFile, menu->addAction(Core::ActionManager::registerAction(m_formatFile,
@@ -90,8 +88,7 @@ void ArtisticStyle::updateActions(Core::IEditor *editor)
QList<QObject *> ArtisticStyle::autoReleaseObjects() QList<QObject *> ArtisticStyle::autoReleaseObjects()
{ {
ArtisticStyleOptionsPage *optionsPage = new ArtisticStyleOptionsPage(m_settings, this); return {new ArtisticStyleOptionsPage(m_settings, this)};
return QList<QObject *>() << optionsPage;
} }
void ArtisticStyle::formatFile() void ArtisticStyle::formatFile()
@@ -99,7 +96,7 @@ void ArtisticStyle::formatFile()
const QString cfgFileName = configurationFile(); const QString cfgFileName = configurationFile();
if (cfgFileName.isEmpty()) { if (cfgFileName.isEmpty()) {
BeautifierPlugin::showError(BeautifierPlugin::msgCannotGetConfigurationFile( BeautifierPlugin::showError(BeautifierPlugin::msgCannotGetConfigurationFile(
QLatin1String(Constants::ArtisticStyle::DISPLAY_NAME))); Constants::ArtisticStyle::DISPLAY_NAME));
} else { } else {
m_beautifierPlugin->formatCurrentFile(command(cfgFileName)); m_beautifierPlugin->formatCurrentFile(command(cfgFileName));
} }
@@ -114,8 +111,8 @@ QString ArtisticStyle::configurationFile() const
if (const ProjectExplorer::Project *project if (const ProjectExplorer::Project *project
= ProjectExplorer::ProjectTree::currentProject()) { = ProjectExplorer::ProjectTree::currentProject()) {
const QStringList files = project->files(ProjectExplorer::Project::AllFiles); const QStringList files = project->files(ProjectExplorer::Project::AllFiles);
foreach (const QString &file, files) { for (const QString &file : files) {
if (!file.endsWith(QLatin1String(".astylerc"))) if (!file.endsWith(".astylerc"))
continue; continue;
const QFileInfo fi(file); const QFileInfo fi(file);
if (fi.isReadable()) if (fi.isReadable())
@@ -126,10 +123,10 @@ QString ArtisticStyle::configurationFile() const
if (m_settings->useHomeFile()) { if (m_settings->useHomeFile()) {
const QDir homeDirectory = QDir::home(); const QDir homeDirectory = QDir::home();
QString file = homeDirectory.filePath(QLatin1String(".astylerc")); QString file = homeDirectory.filePath(".astylerc");
if (QFile::exists(file)) if (QFile::exists(file))
return file; return file;
file = homeDirectory.filePath(QLatin1String("astylerc")); file = homeDirectory.filePath("astylerc");
if (QFile::exists(file)) if (QFile::exists(file))
return file; return file;
} }
@@ -141,15 +138,15 @@ Command ArtisticStyle::command(const QString &cfgFile) const
{ {
Command command; Command command;
command.setExecutable(m_settings->command()); command.setExecutable(m_settings->command());
command.addOption(QLatin1String("-q")); command.addOption("-q");
command.addOption(QLatin1String("--options=") + cfgFile); command.addOption("--options=" + cfgFile);
if (m_settings->version() > ArtisticStyleSettings::Version_2_03) { if (m_settings->version() > ArtisticStyleSettings::Version_2_03) {
command.setProcessing(Command::PipeProcessing); command.setProcessing(Command::PipeProcessing);
command.setPipeAddsNewline(true); command.setPipeAddsNewline(true);
command.setReturnsCRLF(Utils::HostOsInfo::isWindowsHost()); command.setReturnsCRLF(Utils::HostOsInfo::isWindowsHost());
} else { } else {
command.addOption(QLatin1String("%file")); command.addOption("%file");
} }
return command; return command;

View File

@@ -44,18 +44,16 @@ class ArtisticStyle : public BeautifierAbstractTool
Q_OBJECT Q_OBJECT
public: public:
explicit ArtisticStyle(BeautifierPlugin *parent = 0); explicit ArtisticStyle(BeautifierPlugin *parent = nullptr);
virtual ~ArtisticStyle(); virtual ~ArtisticStyle();
bool initialize() override; bool initialize() override;
void updateActions(Core::IEditor *editor) override; void updateActions(Core::IEditor *editor) override;
QList<QObject *> autoReleaseObjects() override; QList<QObject *> autoReleaseObjects() override;
private slots:
void formatFile();
private: private:
void formatFile();
BeautifierPlugin *m_beautifierPlugin; BeautifierPlugin *m_beautifierPlugin;
QAction *m_formatFile; QAction *m_formatFile = nullptr;
ArtisticStyleSettings *m_settings; ArtisticStyleSettings *m_settings;
QString configurationFile() const; QString configurationFile() const;
Command command(const QString &cfgFile) const; Command command(const QString &cfgFile) const;

View File

@@ -29,11 +29,11 @@ namespace Beautifier {
namespace Constants { namespace Constants {
namespace ArtisticStyle { namespace ArtisticStyle {
const char DISPLAY_NAME[] = "Artistic Style"; const char DISPLAY_NAME[] = "Artistic Style";
const char ACTION_FORMATFILE[] = "ArtisticStyle.FormatFile"; const char ACTION_FORMATFILE[] = "ArtisticStyle.FormatFile";
const char MENU_ID[] = "ArtisticStyle.Menu"; const char MENU_ID[] = "ArtisticStyle.Menu";
const char OPTION_ID[] = "ArtisticStyle"; const char OPTION_ID[] = "ArtisticStyle";
const char SETTINGS_NAME[] = "artisticstyle"; const char SETTINGS_NAME[] = "artisticstyle";
} // namespace ArtisticStyle } // namespace ArtisticStyle
} // namespace Constants } // namespace Constants

View File

@@ -34,25 +34,22 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <QTextStream>
namespace Beautifier { namespace Beautifier {
namespace Internal { namespace Internal {
namespace ArtisticStyle { namespace ArtisticStyle {
ArtisticStyleOptionsPageWidget::ArtisticStyleOptionsPageWidget(ArtisticStyleSettings *settings, ArtisticStyleOptionsPageWidget::ArtisticStyleOptionsPageWidget(ArtisticStyleSettings *settings,
QWidget *parent) QWidget *parent) :
: QWidget(parent) QWidget(parent),
, ui(new Ui::ArtisticStyleOptionsPage) ui(new Ui::ArtisticStyleOptionsPage),
, m_settings(settings) m_settings(settings)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->useHomeFile->setText(ui->useHomeFile->text().replace( ui->useHomeFile->setText(ui->useHomeFile->text().replace(
QLatin1String("HOME"), "HOME", QDir::toNativeSeparators(QDir::home().absolutePath())));
QDir::toNativeSeparators(QDir::home().absolutePath())));
ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand); ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand);
ui->command->setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle( ui->command->setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle(
QLatin1String(Constants::ArtisticStyle::DISPLAY_NAME))); Constants::ArtisticStyle::DISPLAY_NAME));
connect(ui->command, &Utils::PathChooser::validChanged, ui->options, &QWidget::setEnabled); connect(ui->command, &Utils::PathChooser::validChanged, ui->options, &QWidget::setEnabled);
ui->configurations->setSettings(m_settings); ui->configurations->setSettings(m_settings);
} }
@@ -81,18 +78,15 @@ void ArtisticStyleOptionsPageWidget::apply()
m_settings->save(); m_settings->save();
} }
/* ---------------------------------------------------------------------------------------------- */
ArtisticStyleOptionsPage::ArtisticStyleOptionsPage(ArtisticStyleSettings *settings, QObject *parent) : ArtisticStyleOptionsPage::ArtisticStyleOptionsPage(ArtisticStyleSettings *settings, QObject *parent) :
IOptionsPage(parent), IOptionsPage(parent),
m_widget(0),
m_settings(settings) m_settings(settings)
{ {
setId(Constants::ArtisticStyle::OPTION_ID); setId(Constants::ArtisticStyle::OPTION_ID);
setDisplayName(tr("Artistic Style")); setDisplayName(tr("Artistic Style"));
setCategory(Constants::OPTION_CATEGORY); setCategory(Constants::OPTION_CATEGORY);
setDisplayCategory(QCoreApplication::translate("Beautifier", Constants::OPTION_TR_CATEGORY)); setDisplayCategory(QCoreApplication::translate("Beautifier", Constants::OPTION_TR_CATEGORY));
setCategoryIcon(QLatin1String(Constants::OPTION_CATEGORY_ICON)); setCategoryIcon(Constants::OPTION_CATEGORY_ICON);
} }
QWidget *ArtisticStyleOptionsPage::widget() QWidget *ArtisticStyleOptionsPage::widget()

View File

@@ -43,7 +43,8 @@ class ArtisticStyleOptionsPageWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ArtisticStyleOptionsPageWidget(ArtisticStyleSettings *settings, QWidget *parent = 0); explicit ArtisticStyleOptionsPageWidget(ArtisticStyleSettings *settings,
QWidget *parent = nullptr);
virtual ~ArtisticStyleOptionsPageWidget(); virtual ~ArtisticStyleOptionsPageWidget();
void restore(); void restore();
void apply(); void apply();
@@ -58,7 +59,7 @@ class ArtisticStyleOptionsPage : public Core::IOptionsPage
Q_OBJECT Q_OBJECT
public: public:
explicit ArtisticStyleOptionsPage(ArtisticStyleSettings *settings, QObject *parent = 0); explicit ArtisticStyleOptionsPage(ArtisticStyleSettings *settings, QObject *parent = nullptr);
QWidget *widget() override; QWidget *widget() override;
void apply() override; void apply() override;
void finish() override; void finish() override;

View File

@@ -44,31 +44,30 @@ namespace Internal {
namespace ArtisticStyle { namespace ArtisticStyle {
namespace { namespace {
const char kUseOtherFiles[] = "useOtherFiles"; const char USE_OTHER_FILES[] = "useOtherFiles";
const char kUseHomeFile[] = "useHomeFile"; const char USE_HOME_FILE[] = "useHomeFile";
const char kUseCustomStyle[] = "useCustomStyle"; const char USE_CUSTOM_STYLE[] = "useCustomStyle";
const char kCustomStyle[] = "customStyle"; const char CUSTOM_STYLE[] = "customStyle";
} }
ArtisticStyleSettings::ArtisticStyleSettings() : ArtisticStyleSettings::ArtisticStyleSettings() :
AbstractSettings(QLatin1String(Constants::ArtisticStyle::SETTINGS_NAME), AbstractSettings(Constants::ArtisticStyle::SETTINGS_NAME, ".astyle")
QLatin1String(".astyle"))
{ {
connect(&m_versionWatcher, &QFutureWatcherBase::finished, connect(&m_versionWatcher, &QFutureWatcherBase::finished,
this, &ArtisticStyleSettings::helperSetVersion); this, &ArtisticStyleSettings::helperSetVersion);
setCommand(QLatin1String("astyle")); setCommand("astyle");
m_settings.insert(QLatin1String(kUseOtherFiles), QVariant(true)); m_settings.insert(USE_OTHER_FILES, QVariant(true));
m_settings.insert(QLatin1String(kUseHomeFile), QVariant(false)); m_settings.insert(USE_HOME_FILE, QVariant(false));
m_settings.insert(QLatin1String(kUseCustomStyle), QVariant(false)); m_settings.insert(USE_CUSTOM_STYLE, QVariant(false));
m_settings.insert(QLatin1String(kCustomStyle), QVariant()); m_settings.insert(CUSTOM_STYLE, QVariant());
read(); read();
} }
static int parseVersion(const QString &text) static int parseVersion(const QString &text)
{ {
// The version in Artistic Style is printed like "Artistic Style Version 2.04" // The version in Artistic Style is printed like "Artistic Style Version 2.04"
const QRegExp rx(QLatin1String("([2-9]{1})\\.([0-9]{2})(\\.[1-9]{1})?$")); const QRegExp rx("([2-9]{1})\\.([0-9]{2})(\\.[1-9]{1})?$");
if (rx.indexIn(text) != -1) { if (rx.indexIn(text) != -1) {
const int major = rx.cap(1).toInt() * 100; const int major = rx.cap(1).toInt() * 100;
const int minor = rx.cap(2).toInt(); const int minor = rx.cap(2).toInt();
@@ -80,7 +79,7 @@ static int parseVersion(const QString &text)
static int updateVersionHelper(const QString &command) static int updateVersionHelper(const QString &command)
{ {
QProcess process; QProcess process;
process.start(command, QStringList() << QLatin1String("--version")); process.start(command, {"--version"});
if (!process.waitForFinished()) { if (!process.waitForFinished()) {
process.kill(); process.kill();
return 0; return 0;
@@ -109,56 +108,55 @@ void ArtisticStyleSettings::helperSetVersion()
bool ArtisticStyleSettings::useOtherFiles() const bool ArtisticStyleSettings::useOtherFiles() const
{ {
return m_settings.value(QLatin1String(kUseOtherFiles)).toBool(); return m_settings.value(USE_OTHER_FILES).toBool();
} }
void ArtisticStyleSettings::setUseOtherFiles(bool useOtherFiles) void ArtisticStyleSettings::setUseOtherFiles(bool useOtherFiles)
{ {
m_settings.insert(QLatin1String(kUseOtherFiles), QVariant(useOtherFiles)); m_settings.insert(USE_OTHER_FILES, QVariant(useOtherFiles));
} }
bool ArtisticStyleSettings::useHomeFile() const bool ArtisticStyleSettings::useHomeFile() const
{ {
return m_settings.value(QLatin1String(kUseHomeFile)).toBool(); return m_settings.value(USE_HOME_FILE).toBool();
} }
void ArtisticStyleSettings::setUseHomeFile(bool useHomeFile) void ArtisticStyleSettings::setUseHomeFile(bool useHomeFile)
{ {
m_settings.insert(QLatin1String(kUseHomeFile), QVariant(useHomeFile)); m_settings.insert(USE_HOME_FILE, QVariant(useHomeFile));
} }
bool ArtisticStyleSettings::useCustomStyle() const bool ArtisticStyleSettings::useCustomStyle() const
{ {
return m_settings.value(QLatin1String(kUseCustomStyle)).toBool(); return m_settings.value(USE_CUSTOM_STYLE).toBool();
} }
void ArtisticStyleSettings::setUseCustomStyle(bool useCustomStyle) void ArtisticStyleSettings::setUseCustomStyle(bool useCustomStyle)
{ {
m_settings.insert(QLatin1String(kUseCustomStyle), QVariant(useCustomStyle)); m_settings.insert(USE_CUSTOM_STYLE, QVariant(useCustomStyle));
} }
QString ArtisticStyleSettings::customStyle() const QString ArtisticStyleSettings::customStyle() const
{ {
return m_settings.value(QLatin1String(kCustomStyle)).toString(); return m_settings.value(CUSTOM_STYLE).toString();
} }
void ArtisticStyleSettings::setCustomStyle(const QString &customStyle) void ArtisticStyleSettings::setCustomStyle(const QString &customStyle)
{ {
m_settings.insert(QLatin1String(kCustomStyle), QVariant(customStyle)); m_settings.insert(CUSTOM_STYLE, QVariant(customStyle));
} }
QString ArtisticStyleSettings::documentationFilePath() const QString ArtisticStyleSettings::documentationFilePath() const
{ {
return Core::ICore::userResourcePath() + QLatin1Char('/') return Core::ICore::userResourcePath() + '/' + Beautifier::Constants::SETTINGS_DIRNAME + '/'
+ QLatin1String(Beautifier::Constants::SETTINGS_DIRNAME) + QLatin1Char('/') + Beautifier::Constants::DOCUMENTATION_DIRNAME + '/'
+ QLatin1String(Beautifier::Constants::DOCUMENTATION_DIRNAME) + QLatin1Char('/') + Constants::ArtisticStyle::SETTINGS_NAME + ".xml";
+ QLatin1String(Constants::ArtisticStyle::SETTINGS_NAME) + QLatin1String(".xml");
} }
void ArtisticStyleSettings::createDocumentationFile() const void ArtisticStyleSettings::createDocumentationFile() const
{ {
QProcess process; QProcess process;
process.start(command(), QStringList() << QLatin1String("-h")); process.start(command(), {"-h"});
process.waitForFinished(2000); // show help should be really fast. process.waitForFinished(2000); // show help should be really fast.
if (process.error() != QProcess::UnknownError) if (process.error() != QProcess::UnknownError)
return; return;
@@ -173,43 +171,39 @@ void ArtisticStyleSettings::createDocumentationFile() const
bool contextWritten = false; bool contextWritten = false;
QXmlStreamWriter stream(&file); QXmlStreamWriter stream(&file);
stream.setAutoFormatting(true); stream.setAutoFormatting(true);
stream.writeStartDocument(QLatin1String("1.0"), true); stream.writeStartDocument("1.0", true);
stream.writeComment(QLatin1String("Created ") stream.writeComment("Created " + QDateTime::currentDateTime().toString(Qt::ISODate));
+ QDateTime::currentDateTime().toString(Qt::ISODate)); stream.writeStartElement(Constants::DOCUMENTATION_XMLROOT);
stream.writeStartElement(QLatin1String(Constants::DOCUMENTATION_XMLROOT));
// astyle writes its output to 'error'... // astyle writes its output to 'error'...
const QStringList lines = QString::fromUtf8(process.readAllStandardError()) const QStringList lines = QString::fromUtf8(process.readAllStandardError())
.split(QLatin1Char('\n')); .split('\n');
QStringList keys; QStringList keys;
QStringList docu; QStringList docu;
foreach (QString line, lines) { for (QString line : lines) {
line = line.trimmed(); line = line.trimmed();
if ((line.startsWith(QLatin1String("--")) && !line.startsWith(QLatin1String("---"))) if ((line.startsWith("--") && !line.startsWith("---")) || line.startsWith("OR ")) {
|| line.startsWith(QLatin1String("OR "))) { const QStringList rawKeys = line.split(" OR ", QString::SkipEmptyParts);
QStringList rawKeys = line.split(QLatin1String(" OR "), QString::SkipEmptyParts); for (QString k : rawKeys) {
foreach (QString k, rawKeys) {
k = k.trimmed(); k = k.trimmed();
k.remove(QLatin1Char('#')); k.remove('#');
keys << k; keys << k;
if (k.startsWith(QLatin1String("--"))) if (k.startsWith("--"))
keys << k.right(k.size() - 2); keys << k.right(k.size() - 2);
} }
} else { } else {
if (line.isEmpty()) { if (line.isEmpty()) {
if (!keys.isEmpty()) { if (!keys.isEmpty()) {
// Write entry // Write entry
stream.writeStartElement(QLatin1String(Constants::DOCUMENTATION_XMLENTRY)); stream.writeStartElement(Constants::DOCUMENTATION_XMLENTRY);
stream.writeStartElement(QLatin1String(Constants::DOCUMENTATION_XMLKEYS)); stream.writeStartElement(Constants::DOCUMENTATION_XMLKEYS);
foreach (const QString &key, keys) for (const QString &key : keys)
stream.writeTextElement(QLatin1String(Constants::DOCUMENTATION_XMLKEY), key); stream.writeTextElement(Constants::DOCUMENTATION_XMLKEY, key);
stream.writeEndElement(); stream.writeEndElement();
const QString text = QLatin1String("<p><span class=\"option\">") const QString text = "<p><span class=\"option\">"
+ keys.filter(QRegExp(QLatin1String("^\\-"))).join(QLatin1String(", ")) + keys.filter(QRegExp("^\\-")).join(", ") + "</span></p><p>"
+ QLatin1String("</span></p><p>") + (docu.join(' ').toHtmlEscaped()) + "</p>";
+ (docu.join(QLatin1Char(' ')).toHtmlEscaped()) stream.writeTextElement(Constants::DOCUMENTATION_XMLDOC, text);
+ QLatin1String("</p>");
stream.writeTextElement(QLatin1String(Constants::DOCUMENTATION_XMLDOC), text);
stream.writeEndElement(); stream.writeEndElement();
contextWritten = true; contextWritten = true;
} }

View File

@@ -27,7 +27,6 @@
#include "../abstractsettings.h" #include "../abstractsettings.h"
#include <QFuture> #include <QFuture>
#include <QFutureWatcher> #include <QFutureWatcher>
@@ -63,10 +62,8 @@ public:
QString documentationFilePath() const override; QString documentationFilePath() const override;
void createDocumentationFile() const override; void createDocumentationFile() const override;
private slots:
void helperSetVersion();
private: private:
void helperSetVersion();
QFuture<int> m_versionFuture; QFuture<int> m_versionFuture;
QFutureWatcher<int> m_versionWatcher; QFutureWatcher<int> m_versionWatcher;
}; };

View File

@@ -38,7 +38,7 @@ class BeautifierAbstractTool : public QObject
Q_OBJECT Q_OBJECT
public: public:
explicit BeautifierAbstractTool(QObject *parent = 0) : QObject(parent) {} explicit BeautifierAbstractTool(QObject *parent = nullptr) : QObject(parent) {}
virtual ~BeautifierAbstractTool() {} virtual ~BeautifierAbstractTool() {}
virtual bool initialize() = 0; virtual bool initialize() = 0;

View File

@@ -37,20 +37,15 @@
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h> #include <coreplugin/messagemanager.h>
#include <diffeditor/differ.h> #include <diffeditor/differ.h>
#include <texteditor/convenience.h> #include <texteditor/convenience.h>
#include <texteditor/textdocument.h> #include <texteditor/textdocument.h>
#include <texteditor/textdocumentlayout.h> #include <texteditor/textdocumentlayout.h>
#include <texteditor/texteditor.h> #include <texteditor/texteditor.h>
#include <texteditor/texteditorconstants.h>
#include <utils/fileutils.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/runextensions.h> #include <utils/runextensions.h>
#include <QAction>
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
#include <QFutureWatcher> #include <QFutureWatcher>
@@ -59,7 +54,6 @@
#include <QProcess> #include <QProcess>
#include <QScrollBar> #include <QScrollBar>
#include <QTextBlock> #include <QTextBlock>
#include <QtPlugin>
using namespace TextEditor; using namespace TextEditor;
@@ -79,7 +73,7 @@ FormatTask format(FormatTask task)
case Command::FileProcessing: { case Command::FileProcessing: {
// Save text to temporary file // Save text to temporary file
const QFileInfo fi(task.filePath); const QFileInfo fi(task.filePath);
Utils::TempFileSaver sourceFile(QDir::tempPath() + QLatin1String("/qtc_beautifier_XXXXXXXX.") Utils::TempFileSaver sourceFile(QDir::tempPath() + "/qtc_beautifier_XXXXXXXX."
+ fi.suffix()); + fi.suffix());
sourceFile.setAutoRemove(true); sourceFile.setAutoRemove(true);
sourceFile.write(task.sourceData.toUtf8()); sourceFile.write(task.sourceData.toUtf8());
@@ -92,7 +86,7 @@ FormatTask format(FormatTask task)
// Format temporary file // Format temporary file
QProcess process; QProcess process;
QStringList options = task.command.options(); QStringList options = task.command.options();
options.replaceInStrings(QLatin1String("%file"), sourceFile.fileName()); options.replaceInStrings("%file", sourceFile.fileName());
process.start(executable, options); process.start(executable, options);
if (!process.waitForFinished(5000)) { if (!process.waitForFinished(5000)) {
process.kill(); process.kill();
@@ -103,7 +97,7 @@ FormatTask format(FormatTask task)
} }
const QByteArray output = process.readAllStandardError(); const QByteArray output = process.readAllStandardError();
if (!output.isEmpty()) if (!output.isEmpty())
task.error = executable + QLatin1String(": ") + QString::fromUtf8(output); task.error = executable + ": " + QString::fromUtf8(output);
// Read text back // Read text back
Utils::FileReader reader; Utils::FileReader reader;
@@ -114,13 +108,13 @@ FormatTask format(FormatTask task)
} }
task.formattedData = QString::fromUtf8(reader.data()); task.formattedData = QString::fromUtf8(reader.data());
return task; return task;
} break; }
case Command::PipeProcessing: { case Command::PipeProcessing: {
QProcess process; QProcess process;
QStringList options = task.command.options(); QStringList options = task.command.options();
options.replaceInStrings(QLatin1String("%filename"), QFileInfo(task.filePath).fileName()); options.replaceInStrings("%filename", QFileInfo(task.filePath).fileName());
options.replaceInStrings(QLatin1String("%file"), task.filePath); options.replaceInStrings("%file", task.filePath);
process.start(executable, options); process.start(executable, options);
if (!process.waitForStarted(3000)) { if (!process.waitForStarted(3000)) {
task.error = QObject::tr("Cannot call %1 or some other error occurred.") task.error = QObject::tr("Cannot call %1 or some other error occurred.")
@@ -148,9 +142,9 @@ FormatTask format(FormatTask task)
if (addsNewline || returnsCRLF) { if (addsNewline || returnsCRLF) {
task.formattedData = QString::fromUtf8(process.readAllStandardOutput()); task.formattedData = QString::fromUtf8(process.readAllStandardOutput());
if (addsNewline) if (addsNewline)
task.formattedData.remove(QRegExp(QLatin1String("(\\r\\n|\\n)$"))); task.formattedData.remove(QRegExp("(\\r\\n|\\n)$"));
if (returnsCRLF) if (returnsCRLF)
task.formattedData.replace(QLatin1String("\r\n"), QLatin1String("\n")); task.formattedData.replace("\r\n", "\n");
return task; return task;
} }
task.formattedData = QString::fromUtf8(process.readAllStandardOutput()); task.formattedData = QString::fromUtf8(process.readAllStandardOutput());
@@ -182,10 +176,10 @@ bool BeautifierPlugin::initialize(const QStringList &arguments, QString *errorSt
menu->setOnAllDisabledBehavior(Core::ActionContainer::Show); menu->setOnAllDisabledBehavior(Core::ActionContainer::Show);
Core::ActionManager::actionContainer(Core::Constants::M_TOOLS)->addMenu(menu); Core::ActionManager::actionContainer(Core::Constants::M_TOOLS)->addMenu(menu);
foreach (BeautifierAbstractTool *tool, m_tools) { for (BeautifierAbstractTool *tool : m_tools) {
tool->initialize(); tool->initialize();
const QList<QObject *> autoReleasedObjects = tool->autoReleaseObjects(); const QList<QObject *> autoReleasedObjects = tool->autoReleaseObjects();
foreach (QObject *object, autoReleasedObjects) for (QObject *object : autoReleasedObjects)
addAutoReleasedObject(object); addAutoReleasedObject(object);
} }
@@ -208,7 +202,7 @@ ExtensionSystem::IPlugin::ShutdownFlag BeautifierPlugin::aboutToShutdown()
void BeautifierPlugin::updateActions(Core::IEditor *editor) void BeautifierPlugin::updateActions(Core::IEditor *editor)
{ {
foreach (BeautifierAbstractTool *tool, m_tools) for (BeautifierAbstractTool *tool : m_tools)
tool->updateActions(editor); tool->updateActions(editor);
} }
@@ -333,7 +327,7 @@ void BeautifierPlugin::updateEditorText(QPlainTextEdit *editor, const QString &t
int newCursorPos = charactersInfrontOfCursor; int newCursorPos = charactersInfrontOfCursor;
cursor.beginEditBlock(); cursor.beginEditBlock();
cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor);
foreach (const DiffEditor::Diff &d, diff) { for (const DiffEditor::Diff &d : diff) {
switch (d.command) { switch (d.command) {
case DiffEditor::Diff::Insert: case DiffEditor::Diff::Insert:
{ {
@@ -344,8 +338,8 @@ void BeautifierPlugin::updateEditorText(QPlainTextEdit *editor, const QString &t
newCursorPos += size; newCursorPos += size;
} }
// Adjust folded blocks, if a new block is added. // Adjust folded blocks, if a new block is added.
if (d.text.contains(QLatin1Char('\n'))) { if (d.text.contains('\n')) {
const int newLineCount = d.text.count(QLatin1Char('\n')); const int newLineCount = d.text.count('\n');
const int number = cursor.blockNumber(); const int number = cursor.blockNumber();
const int total = foldedBlocks.size(); const int total = foldedBlocks.size();
for (int i = 0; i < total; ++i) { for (int i = 0; i < total; ++i) {
@@ -354,8 +348,9 @@ void BeautifierPlugin::updateEditorText(QPlainTextEdit *editor, const QString &t
} }
} }
cursor.insertText(d.text); cursor.insertText(d.text);
}
break; break;
}
case DiffEditor::Diff::Delete: case DiffEditor::Diff::Delete:
{ {
// Adjust cursor position if we do work in front of the cursor. // Adjust cursor position if we do work in front of the cursor.
@@ -368,8 +363,8 @@ void BeautifierPlugin::updateEditorText(QPlainTextEdit *editor, const QString &t
newCursorPos -= charactersInfrontOfCursor; newCursorPos -= charactersInfrontOfCursor;
} }
// Adjust folded blocks, if at least one block is being deleted. // Adjust folded blocks, if at least one block is being deleted.
if (d.text.contains(QLatin1Char('\n'))) { if (d.text.contains('\n')) {
const int newLineCount = d.text.count(QLatin1Char('\n')); const int newLineCount = d.text.count('\n');
const int number = cursor.blockNumber(); const int number = cursor.blockNumber();
for (int i = 0, total = foldedBlocks.size(); i < total; ++i) { for (int i = 0, total = foldedBlocks.size(); i < total; ++i) {
if (foldedBlocks.at(i) > number) { if (foldedBlocks.at(i) > number) {
@@ -384,8 +379,9 @@ void BeautifierPlugin::updateEditorText(QPlainTextEdit *editor, const QString &t
} }
cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, d.text.size()); cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, d.text.size());
cursor.removeSelectedText(); cursor.removeSelectedText();
}
break; break;
}
case DiffEditor::Diff::Equal: case DiffEditor::Diff::Equal:
// Adjust cursor position // Adjust cursor position
charactersInfrontOfCursor -= d.text.size(); charactersInfrontOfCursor -= d.text.size();
@@ -404,7 +400,7 @@ void BeautifierPlugin::updateEditorText(QPlainTextEdit *editor, const QString &t
+ absoluteVerticalCursorOffset / fontHeight); + absoluteVerticalCursorOffset / fontHeight);
// Restore folded blocks // Restore folded blocks
const QTextDocument *doc = editor->document(); const QTextDocument *doc = editor->document();
foreach (const int blockId, foldedBlocks) { for (int blockId : foldedBlocks) {
const QTextBlock block = doc->findBlockByNumber(qMax(0, blockId)); const QTextBlock block = doc->findBlockByNumber(qMax(0, blockId));
if (block.isValid()) if (block.isValid())
TextDocumentLayout::doFoldOrUnfold(block, false); TextDocumentLayout::doFoldOrUnfold(block, false);

View File

@@ -29,10 +29,8 @@
#include <extensionsystem/iplugin.h> #include <extensionsystem/iplugin.h>
#include <QFutureInterface>
#include <QPlainTextEdit> #include <QPlainTextEdit>
#include <QPointer> #include <QPointer>
#include <QSignalMapper>
namespace Core { class IEditor; } namespace Core { class IEditor; }
namespace TextEditor { class TextEditorWidget; } namespace TextEditor { class TextEditorWidget; }
@@ -44,10 +42,6 @@ class BeautifierAbstractTool;
struct FormatTask struct FormatTask
{ {
FormatTask() :
startPos(-1),
endPos(0) {}
FormatTask(QPlainTextEdit *_editor, const QString &_filePath, const QString &_sourceData, FormatTask(QPlainTextEdit *_editor, const QString &_filePath, const QString &_sourceData,
const Command &_command, int _startPos = -1, int _endPos = 0) : const Command &_command, int _startPos = -1, int _endPos = 0) :
editor(_editor), editor(_editor),
@@ -61,8 +55,8 @@ struct FormatTask
QString filePath; QString filePath;
QString sourceData; QString sourceData;
Command command; Command command;
int startPos; int startPos = -1;
int endPos; int endPos = 0;
QString formattedData; QString formattedData;
QString error; QString error;
}; };
@@ -85,12 +79,9 @@ public:
static QString msgCommandPromptDialogTitle(const QString &command); static QString msgCommandPromptDialogTitle(const QString &command);
static void showError(const QString &error); static void showError(const QString &error);
private slots:
void updateActions(Core::IEditor *editor = 0);
private: private:
void updateActions(Core::IEditor *editor = nullptr);
QList<BeautifierAbstractTool *> m_tools; QList<BeautifierAbstractTool *> m_tools;
void formatEditor(TextEditor::TextEditorWidget *editor, const Command &command, void formatEditor(TextEditor::TextEditorWidget *editor, const Command &command,
int startPos = -1, int endPos = 0); int startPos = -1, int endPos = 0);
void formatEditorAsync(TextEditor::TextEditorWidget *editor, const Command &command, void formatEditorAsync(TextEditor::TextEditorWidget *editor, const Command &command,

View File

@@ -39,8 +39,6 @@
#include <coreplugin/actionmanager/command.h> #include <coreplugin/actionmanager/command.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <cppeditor/cppeditorconstants.h> #include <cppeditor/cppeditorconstants.h>
#include <texteditor/texteditor.h> #include <texteditor/texteditor.h>
@@ -48,7 +46,6 @@
#include <QAction> #include <QAction>
#include <QMenu> #include <QMenu>
#include <QStringList>
namespace Beautifier { namespace Beautifier {
namespace Internal { namespace Internal {
@@ -69,7 +66,7 @@ ClangFormat::~ClangFormat()
bool ClangFormat::initialize() bool ClangFormat::initialize()
{ {
Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::ClangFormat::MENU_ID); Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::ClangFormat::MENU_ID);
menu->menu()->setTitle(QLatin1String(Constants::ClangFormat::DISPLAY_NAME)); menu->menu()->setTitle(Constants::ClangFormat::DISPLAY_NAME);
m_formatFile = new QAction(BeautifierPlugin::msgFormatCurrentFile(), this); m_formatFile = new QAction(BeautifierPlugin::msgFormatCurrentFile(), this);
Core::Command *cmd Core::Command *cmd
@@ -98,8 +95,7 @@ void ClangFormat::updateActions(Core::IEditor *editor)
QList<QObject *> ClangFormat::autoReleaseObjects() QList<QObject *> ClangFormat::autoReleaseObjects()
{ {
ClangFormatOptionsPage *optionsPage = new ClangFormatOptionsPage(m_settings, this); return {new ClangFormatOptionsPage(m_settings, this)};
return QList<QObject *>() << optionsPage;
} }
void ClangFormat::formatFile() void ClangFormat::formatFile()
@@ -131,19 +127,18 @@ Command ClangFormat::command(int offset, int length) const
command.setProcessing(Command::PipeProcessing); command.setProcessing(Command::PipeProcessing);
if (m_settings->usePredefinedStyle()) { if (m_settings->usePredefinedStyle()) {
command.addOption(QLatin1String("-style=") + m_settings->predefinedStyle()); command.addOption("-style=" + m_settings->predefinedStyle());
command.addOption(QLatin1String("-assume-filename=%filename")); command.addOption("-assume-filename=%filename");
} else { } else {
command.addOption(QLatin1String("-style=file")); command.addOption("-style=file");
const QString path = const QString path =
QFileInfo(m_settings->styleFileName(m_settings->customStyle())).absolutePath(); QFileInfo(m_settings->styleFileName(m_settings->customStyle())).absolutePath();
command.addOption(QLatin1String("-assume-filename=") + path + QDir::separator() command.addOption("-assume-filename=" + path + QDir::separator() + "%filename");
+ QLatin1String("%filename"));
} }
if (offset != -1) { if (offset != -1) {
command.addOption(QLatin1String("-offset=") + QString::number(offset)); command.addOption("-offset=" + QString::number(offset));
command.addOption(QLatin1String("-length=") + QString::number(length)); command.addOption("-length=" + QString::number(length));
} }
return command; return command;

View File

@@ -28,7 +28,6 @@
#include "../beautifierabstracttool.h" #include "../beautifierabstracttool.h"
#include "../command.h" #include "../command.h"
QT_FORWARD_DECLARE_CLASS(QAction) QT_FORWARD_DECLARE_CLASS(QAction)
namespace Beautifier { namespace Beautifier {
@@ -45,20 +44,18 @@ class ClangFormat : public BeautifierAbstractTool
Q_OBJECT Q_OBJECT
public: public:
explicit ClangFormat(BeautifierPlugin *parent = 0); explicit ClangFormat(BeautifierPlugin *parent = nullptr);
virtual ~ClangFormat(); virtual ~ClangFormat();
bool initialize() override; bool initialize() override;
void updateActions(Core::IEditor *editor) override; void updateActions(Core::IEditor *editor) override;
QList<QObject *> autoReleaseObjects() override; QList<QObject *> autoReleaseObjects() override;
private slots: private:
void formatFile(); void formatFile();
void formatSelectedText(); void formatSelectedText();
private:
BeautifierPlugin *m_beautifierPlugin; BeautifierPlugin *m_beautifierPlugin;
QAction *m_formatFile; QAction *m_formatFile = nullptr;
QAction *m_formatRange; QAction *m_formatRange = nullptr;
ClangFormatSettings *m_settings; ClangFormatSettings *m_settings;
Command command(int offset = -1, int length = -1) const; Command command(int offset = -1, int length = -1) const;
}; };

View File

@@ -34,24 +34,22 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <QTextStream>
namespace Beautifier { namespace Beautifier {
namespace Internal { namespace Internal {
namespace ClangFormat { namespace ClangFormat {
ClangFormatOptionsPageWidget::ClangFormatOptionsPageWidget(ClangFormatSettings *settings, ClangFormatOptionsPageWidget::ClangFormatOptionsPageWidget(ClangFormatSettings *settings,
QWidget *parent) QWidget *parent) :
: QWidget(parent) QWidget(parent),
, ui(new Ui::ClangFormatOptionsPage) ui(new Ui::ClangFormatOptionsPage),
, m_settings(settings) m_settings(settings)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->options->setEnabled(false); ui->options->setEnabled(false);
ui->predefinedStyle->addItems(m_settings->predefinedStyles()); ui->predefinedStyle->addItems(m_settings->predefinedStyles());
ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand); ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand);
ui->command->setPromptDialogTitle( ui->command->setPromptDialogTitle(
BeautifierPlugin::msgCommandPromptDialogTitle(QLatin1String("Clang Format"))); BeautifierPlugin::msgCommandPromptDialogTitle("Clang Format"));
connect(ui->command, &Utils::PathChooser::validChanged, ui->options, &QWidget::setEnabled); connect(ui->command, &Utils::PathChooser::validChanged, ui->options, &QWidget::setEnabled);
ui->configurations->setSettings(m_settings); ui->configurations->setSettings(m_settings);
} }
@@ -87,18 +85,15 @@ void ClangFormatOptionsPageWidget::apply()
m_settings->save(); m_settings->save();
} }
/* ---------------------------------------------------------------------------------------------- */
ClangFormatOptionsPage::ClangFormatOptionsPage(ClangFormatSettings *settings, QObject *parent) : ClangFormatOptionsPage::ClangFormatOptionsPage(ClangFormatSettings *settings, QObject *parent) :
IOptionsPage(parent), IOptionsPage(parent),
m_widget(0),
m_settings(settings) m_settings(settings)
{ {
setId(Constants::ClangFormat::OPTION_ID); setId(Constants::ClangFormat::OPTION_ID);
setDisplayName(tr("Clang Format")); setDisplayName(tr("Clang Format"));
setCategory(Constants::OPTION_CATEGORY); setCategory(Constants::OPTION_CATEGORY);
setDisplayCategory(QCoreApplication::translate("Beautifier", Constants::OPTION_TR_CATEGORY)); setDisplayCategory(QCoreApplication::translate("Beautifier", Constants::OPTION_TR_CATEGORY));
setCategoryIcon(QLatin1String(Constants::OPTION_CATEGORY_ICON)); setCategoryIcon(Constants::OPTION_CATEGORY_ICON);
} }
QWidget *ClangFormatOptionsPage::widget() QWidget *ClangFormatOptionsPage::widget()

View File

@@ -43,7 +43,7 @@ class ClangFormatOptionsPageWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ClangFormatOptionsPageWidget(ClangFormatSettings *settings, QWidget *parent = 0); explicit ClangFormatOptionsPageWidget(ClangFormatSettings *settings, QWidget *parent = nullptr);
virtual ~ClangFormatOptionsPageWidget(); virtual ~ClangFormatOptionsPageWidget();
void restore(); void restore();
void apply(); void apply();
@@ -58,7 +58,7 @@ class ClangFormatOptionsPage : public Core::IOptionsPage
Q_OBJECT Q_OBJECT
public: public:
explicit ClangFormatOptionsPage(ClangFormatSettings *settings, QObject *parent = 0); explicit ClangFormatOptionsPage(ClangFormatSettings *settings, QObject *parent = nullptr);
QWidget *widget() override; QWidget *widget() override;
void apply() override; void apply() override;
void finish() override; void finish() override;

View File

@@ -39,30 +39,28 @@ namespace Internal {
namespace ClangFormat { namespace ClangFormat {
namespace { namespace {
const char kUsePredefinedStyle[] = "usePredefinedStyle"; const char USE_PREDEFINED_STYLE[] = "usePredefinedStyle";
const char kPredefinedStyle[] = "predefinedStyle"; const char PREDEFINED_STYLE[] = "predefinedStyle";
const char kCustomStyle[] = "customStyle"; const char CUSTOM_STYLE[] = "customStyle";
const char kFormatEntireFileFallback[] = "formatEntireFileFallback"; const char FORMAT_ENTIRE_FILE_FALLBACK[] = "formatEntireFileFallback";
} }
ClangFormatSettings::ClangFormatSettings() : ClangFormatSettings::ClangFormatSettings() :
AbstractSettings(QLatin1String(Constants::ClangFormat::SETTINGS_NAME), AbstractSettings(Constants::ClangFormat::SETTINGS_NAME, ".clang-format")
QLatin1String(".clang-format"))
{ {
setCommand(QLatin1String("clang-format")); setCommand("clang-format");
m_settings.insert(QLatin1String(kUsePredefinedStyle), QVariant(true)); m_settings.insert(USE_PREDEFINED_STYLE, QVariant(true));
m_settings.insert(QLatin1String(kPredefinedStyle), QLatin1String("LLVM")); m_settings.insert(PREDEFINED_STYLE, "LLVM");
m_settings.insert(QLatin1String(kCustomStyle), QVariant()); m_settings.insert(CUSTOM_STYLE, QVariant());
m_settings.insert(QLatin1String(kFormatEntireFileFallback), QVariant(true)); m_settings.insert(FORMAT_ENTIRE_FILE_FALLBACK, QVariant(true));
read(); read();
} }
QString ClangFormatSettings::documentationFilePath() const QString ClangFormatSettings::documentationFilePath() const
{ {
return Core::ICore::userResourcePath() + QLatin1Char('/') return Core::ICore::userResourcePath() + '/' + Beautifier::Constants::SETTINGS_DIRNAME + '/'
+ QLatin1String(Beautifier::Constants::SETTINGS_DIRNAME) + QLatin1Char('/') + Beautifier::Constants::DOCUMENTATION_DIRNAME + '/'
+ QLatin1String(Beautifier::Constants::DOCUMENTATION_DIRNAME) + QLatin1Char('/') + Constants::ClangFormat::SETTINGS_NAME + ".xml";
+ QLatin1String(Constants::ClangFormat::SETTINGS_NAME) + QLatin1String(".xml");
} }
void ClangFormatSettings::createDocumentationFile() const void ClangFormatSettings::createDocumentationFile() const
@@ -76,71 +74,70 @@ void ClangFormatSettings::createDocumentationFile() const
QXmlStreamWriter stream(&file); QXmlStreamWriter stream(&file);
stream.setAutoFormatting(true); stream.setAutoFormatting(true);
stream.writeStartDocument(QLatin1String("1.0"), true); stream.writeStartDocument("1.0", true);
stream.writeComment(QLatin1String("Created ") stream.writeComment("Created " + QDateTime::currentDateTime().toString(Qt::ISODate));
+ QDateTime::currentDateTime().toString(Qt::ISODate)); stream.writeStartElement(Constants::DOCUMENTATION_XMLROOT);
stream.writeStartElement(QLatin1String(Constants::DOCUMENTATION_XMLROOT));
const QStringList lines = QStringList() const QStringList lines = {
<< QLatin1String("BasedOnStyle {string: LLVM, Google, Chromium, Mozilla, WebKit}") "BasedOnStyle {string: LLVM, Google, Chromium, Mozilla, WebKit}",
<< QLatin1String("AccessModifierOffset {int}") "AccessModifierOffset {int}",
<< QLatin1String("AlignEscapedNewlinesLeft {bool}") "AlignEscapedNewlinesLeft {bool}",
<< QLatin1String("AlignTrailingComments {bool}") "AlignTrailingComments {bool}",
<< QLatin1String("AllowAllParametersOfDeclarationOnNextLine {bool}") "AllowAllParametersOfDeclarationOnNextLine {bool}",
<< QLatin1String("AllowShortFunctionsOnASingleLine {bool}") "AllowShortFunctionsOnASingleLine {bool}",
<< QLatin1String("AllowShortIfStatementsOnASingleLine {bool}") "AllowShortIfStatementsOnASingleLine {bool}",
<< QLatin1String("AllowShortLoopsOnASingleLine {bool}") "AllowShortLoopsOnASingleLine {bool}",
<< QLatin1String("AlwaysBreakBeforeMultilineStrings {bool}") "AlwaysBreakBeforeMultilineStrings {bool}",
<< QLatin1String("AlwaysBreakTemplateDeclarations {bool}") "AlwaysBreakTemplateDeclarations {bool}",
<< QLatin1String("BinPackParameters {bool}") "BinPackParameters {bool}",
<< QLatin1String("BreakBeforeBinaryOperators {bool}") "BreakBeforeBinaryOperators {bool}",
<< QLatin1String("BreakBeforeBraces {BraceBreakingStyle: BS_Attach, BS_Linux, BS_Stroustrup, BS_Allman, BS_GNU}") "BreakBeforeBraces {BraceBreakingStyle: BS_Attach, BS_Linux, BS_Stroustrup, BS_Allman, BS_GNU}",
<< QLatin1String("BreakBeforeTernaryOperators {bool}") "BreakBeforeTernaryOperators {bool}",
<< QLatin1String("BreakConstructorInitializersBeforeComma {bool}") "BreakConstructorInitializersBeforeComma {bool}",
<< QLatin1String("ColumnLimit {unsigned}") "ColumnLimit {unsigned}",
<< QLatin1String("CommentPragmas {string}") "CommentPragmas {string}",
<< QLatin1String("ConstructorInitializerAllOnOneLineOrOnePerLine {bool}") "ConstructorInitializerAllOnOneLineOrOnePerLine {bool}",
<< QLatin1String("ConstructorInitializerIndentWidth {unsigned}") "ConstructorInitializerIndentWidth {unsigned}",
<< QLatin1String("ContinuationIndentWidth {unsigned}") "ContinuationIndentWidth {unsigned}",
<< QLatin1String("Cpp11BracedListStyle {bool}") "Cpp11BracedListStyle {bool}",
<< QLatin1String("IndentCaseLabels {bool}") "IndentCaseLabels {bool}",
<< QLatin1String("IndentFunctionDeclarationAfterType {bool}") "IndentFunctionDeclarationAfterType {bool}",
<< QLatin1String("IndentWidth {unsigned}") "IndentWidth {unsigned}",
<< QLatin1String("Language {LanguageKind: LK_None, LK_Cpp, LK_JavaScript, LK_Proto}") "Language {LanguageKind: LK_None, LK_Cpp, LK_JavaScript, LK_Proto}",
<< QLatin1String("MaxEmptyLinesToKeep {unsigned}") "MaxEmptyLinesToKeep {unsigned}",
<< QLatin1String("NamespaceIndentation {NamespaceIndentationKind: NI_None, NI_Inner, NI_All}") "NamespaceIndentation {NamespaceIndentationKind: NI_None, NI_Inner, NI_All}",
<< QLatin1String("ObjCSpaceAfterProperty {bool}") "ObjCSpaceAfterProperty {bool}",
<< QLatin1String("ObjCSpaceBeforeProtocolList {bool}") "ObjCSpaceBeforeProtocolList {bool}",
<< QLatin1String("PenaltyBreakBeforeFirstCallParameter {unsigned}") "PenaltyBreakBeforeFirstCallParameter {unsigned}",
<< QLatin1String("PenaltyBreakComment {unsigned}") "PenaltyBreakComment {unsigned}",
<< QLatin1String("PenaltyBreakFirstLessLess {unsigned}") "PenaltyBreakFirstLessLess {unsigned}",
<< QLatin1String("PenaltyBreakString {unsigned}") "PenaltyBreakString {unsigned}",
<< QLatin1String("PenaltyExcessCharacter {unsigned}") "PenaltyExcessCharacter {unsigned}",
<< QLatin1String("PenaltyReturnTypeOnItsOwnLine {unsigned}") "PenaltyReturnTypeOnItsOwnLine {unsigned}",
<< QLatin1String("PointerBindsToType {bool}") "PointerBindsToType {bool}",
<< QLatin1String("SpaceBeforeAssignmentOperators {bool}") "SpaceBeforeAssignmentOperators {bool}",
<< QLatin1String("SpaceBeforeParens {SpaceBeforeParensOptions: SBPO_Never, SBPO_ControlStatements, SBPO_Always}") "SpaceBeforeParens {SpaceBeforeParensOptions: SBPO_Never, SBPO_ControlStatements, SBPO_Always}",
<< QLatin1String("SpaceInEmptyParentheses {bool}") "SpaceInEmptyParentheses {bool}",
<< QLatin1String("SpacesBeforeTrailingComments {unsigned}") "SpacesBeforeTrailingComments {unsigned}",
<< QLatin1String("SpacesInAngles {bool}") "SpacesInAngles {bool}",
<< QLatin1String("SpacesInCStyleCastParentheses {bool}") "SpacesInCStyleCastParentheses {bool}",
<< QLatin1String("SpacesInContainerLiterals {bool}") "SpacesInContainerLiterals {bool}",
<< QLatin1String("SpacesInParentheses {bool}") "SpacesInParentheses {bool}",
<< QLatin1String("Standard {LanguageStandard: LS_Cpp03, LS_Cpp11, LS_Auto}") "Standard {LanguageStandard: LS_Cpp03, LS_Cpp11, LS_Auto}",
<< QLatin1String("TabWidth {unsigned}") "TabWidth {unsigned}",
<< QLatin1String("UseTab {UseTabStyle: UT_Never, UT_ForIndentation, UT_Always}"); "UseTab {UseTabStyle: UT_Never, UT_ForIndentation, UT_Always}"
};
foreach (const QString& line, lines) { for (const QString& line : lines) {
const int firstSpace = line.indexOf(QLatin1Char(' ')); const int firstSpace = line.indexOf(' ');
const QString keyword = line.left(firstSpace); const QString keyword = line.left(firstSpace);
const QString options = line.right(line.size() - firstSpace).trimmed(); const QString options = line.right(line.size() - firstSpace).trimmed();
const QString text = QLatin1String("<p><span class=\"option\">") + keyword const QString text = "<p><span class=\"option\">" + keyword
+ QLatin1String("</span> <span class=\"param\">") + options + "</span> <span class=\"param\">" + options
+ QLatin1String("</span></p><p>") + tr("No description available.") + "</span></p><p>" + tr("No description available.") + "</p>";
+ QLatin1String("</p>"); stream.writeStartElement(Constants::DOCUMENTATION_XMLENTRY);
stream.writeStartElement(QLatin1String(Constants::DOCUMENTATION_XMLENTRY)); stream.writeTextElement(Constants::DOCUMENTATION_XMLKEY, keyword);
stream.writeTextElement(QLatin1String(Constants::DOCUMENTATION_XMLKEY), keyword); stream.writeTextElement(Constants::DOCUMENTATION_XMLDOC, text);
stream.writeTextElement(QLatin1String(Constants::DOCUMENTATION_XMLDOC), text);
stream.writeEndElement(); stream.writeEndElement();
} }
@@ -150,90 +147,85 @@ void ClangFormatSettings::createDocumentationFile() const
QStringList ClangFormatSettings::completerWords() QStringList ClangFormatSettings::completerWords()
{ {
QStringList words; return {
words << QLatin1String("LLVM") "LLVM",
<< QLatin1String("Google") "Google",
<< QLatin1String("Chromium") "Chromium",
<< QLatin1String("Mozilla") "Mozilla",
<< QLatin1String("WebKit") "WebKit",
<< QLatin1String("BS_Attach") "BS_Attach",
<< QLatin1String("BS_Linux") "BS_Linux",
<< QLatin1String("BS_Stroustrup") "BS_Stroustrup",
<< QLatin1String("BS_Allman") "BS_Allman",
<< QLatin1String("NI_None") "NI_None",
<< QLatin1String("NI_Inner") "NI_Inner",
<< QLatin1String("NI_All") "NI_All",
<< QLatin1String("LS_Cpp03") "LS_Cpp03",
<< QLatin1String("LS_Cpp11") "LS_Cpp11",
<< QLatin1String("LS_Auto") "LS_Auto",
<< QLatin1String("UT_Never") "UT_Never",
<< QLatin1String("UT_ForIndentation") "UT_ForIndentation",
<< QLatin1String("UT_Always"); "UT_Always"
return words; };
} }
bool ClangFormatSettings::usePredefinedStyle() const bool ClangFormatSettings::usePredefinedStyle() const
{ {
return m_settings.value(QLatin1String(kUsePredefinedStyle)).toBool(); return m_settings.value(USE_PREDEFINED_STYLE).toBool();
} }
void ClangFormatSettings::setUsePredefinedStyle(bool usePredefinedStyle) void ClangFormatSettings::setUsePredefinedStyle(bool usePredefinedStyle)
{ {
m_settings.insert(QLatin1String(kUsePredefinedStyle), QVariant(usePredefinedStyle)); m_settings.insert(USE_PREDEFINED_STYLE, QVariant(usePredefinedStyle));
} }
QString ClangFormatSettings::predefinedStyle() const QString ClangFormatSettings::predefinedStyle() const
{ {
return m_settings.value(QLatin1String(kPredefinedStyle)).toString(); return m_settings.value(PREDEFINED_STYLE).toString();
} }
void ClangFormatSettings::setPredefinedStyle(const QString &predefinedStyle) void ClangFormatSettings::setPredefinedStyle(const QString &predefinedStyle)
{ {
const QStringList test = predefinedStyles(); const QStringList test = predefinedStyles();
if (test.contains(predefinedStyle)) if (test.contains(predefinedStyle))
m_settings.insert(QLatin1String(kPredefinedStyle), QVariant(predefinedStyle)); m_settings.insert(PREDEFINED_STYLE, QVariant(predefinedStyle));
} }
QString ClangFormatSettings::customStyle() const QString ClangFormatSettings::customStyle() const
{ {
return m_settings.value(QLatin1String(kCustomStyle)).toString(); return m_settings.value(CUSTOM_STYLE).toString();
} }
void ClangFormatSettings::setCustomStyle(const QString &customStyle) void ClangFormatSettings::setCustomStyle(const QString &customStyle)
{ {
m_settings.insert(QLatin1String(kCustomStyle), QVariant(customStyle)); m_settings.insert(CUSTOM_STYLE, QVariant(customStyle));
} }
bool ClangFormatSettings::formatEntireFileFallback() const bool ClangFormatSettings::formatEntireFileFallback() const
{ {
return m_settings.value(QLatin1String(kFormatEntireFileFallback)).toBool(); return m_settings.value(FORMAT_ENTIRE_FILE_FALLBACK).toBool();
} }
void ClangFormatSettings::setFormatEntireFileFallback(bool formatEntireFileFallback) void ClangFormatSettings::setFormatEntireFileFallback(bool formatEntireFileFallback)
{ {
m_settings.insert(QLatin1String(kFormatEntireFileFallback), QVariant(formatEntireFileFallback)); m_settings.insert(FORMAT_ENTIRE_FILE_FALLBACK, QVariant(formatEntireFileFallback));
} }
QStringList ClangFormatSettings::predefinedStyles() const QStringList ClangFormatSettings::predefinedStyles() const
{ {
return QStringList() << QLatin1String("LLVM") return {"LLVM", "Google", "Chromium", "Mozilla", "WebKit", "File"};
<< QLatin1String("Google")
<< QLatin1String("Chromium")
<< QLatin1String("Mozilla")
<< QLatin1String("WebKit")
<< QLatin1String("File");
} }
QString ClangFormatSettings::styleFileName(const QString &key) const QString ClangFormatSettings::styleFileName(const QString &key) const
{ {
return m_styleDir.absolutePath() + QLatin1Char('/') + key + QLatin1Char('/') + m_ending; return m_styleDir.absolutePath() + '/' + key + '/' + m_ending;
} }
void ClangFormatSettings::readStyles() void ClangFormatSettings::readStyles()
{ {
const QStringList dirs = m_styleDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); const QStringList dirs = m_styleDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
for (const QString &dir : dirs) { for (const QString &dir : dirs) {
QFile file(m_styleDir.absoluteFilePath(dir + QLatin1Char('/') + m_ending)); QFile file(m_styleDir.absoluteFilePath(dir + '/' + m_ending));
if (file.open(QIODevice::ReadOnly)) if (file.open(QIODevice::ReadOnly))
m_styles.insert(dir, QString::fromLocal8Bit(file.readAll())); m_styles.insert(dir, QString::fromLocal8Bit(file.readAll()));
} }

View File

@@ -27,7 +27,6 @@
#include "../abstractsettings.h" #include "../abstractsettings.h"
namespace Beautifier { namespace Beautifier {
namespace Internal { namespace Internal {
namespace ClangFormat { namespace ClangFormat {

View File

@@ -28,13 +28,6 @@
namespace Beautifier { namespace Beautifier {
namespace Internal { namespace Internal {
Command::Command()
: m_processing(FileProcessing)
, m_pipeAddsNewline(false)
, m_returnsCRLF(false)
{
}
QString Command::executable() const QString Command::executable() const
{ {
return m_executable; return m_executable;
@@ -85,6 +78,5 @@ void Command::setReturnsCRLF(bool returnsCRLF)
m_returnsCRLF = returnsCRLF; m_returnsCRLF = returnsCRLF;
} }
} // namespace Internal } // namespace Internal
} // namespace Beautifier } // namespace Beautifier

View File

@@ -39,8 +39,6 @@ public:
PipeProcessing PipeProcessing
}; };
Command();
QString executable() const; QString executable() const;
void setExecutable(const QString &executable); void setExecutable(const QString &executable);
@@ -59,9 +57,9 @@ public:
private: private:
QString m_executable; QString m_executable;
QStringList m_options; QStringList m_options;
Processing m_processing; Processing m_processing = FileProcessing;
bool m_pipeAddsNewline; bool m_pipeAddsNewline = false;
bool m_returnsCRLF; bool m_returnsCRLF = false;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -39,14 +39,13 @@ namespace Internal {
ConfigurationDialog::ConfigurationDialog(QWidget *parent) : ConfigurationDialog::ConfigurationDialog(QWidget *parent) :
QDialog(parent), QDialog(parent),
ui(new Ui::ConfigurationDialog), ui(new Ui::ConfigurationDialog)
m_settings(0)
{ {
ui->setupUi(this); ui->setupUi(this);
// Filter out characters which are not allowed in a file name // Filter out characters which are not allowed in a file name
QRegExpValidator *fileNameValidator = new QRegExpValidator(ui->name); QRegExpValidator *fileNameValidator = new QRegExpValidator(ui->name);
fileNameValidator->setRegExp(QRegExp(QLatin1String("^[^\\/\\\\\\?\\>\\<\\*\\%\\:\\\"\\']*$"))); fileNameValidator->setRegExp(QRegExp("^[^\\/\\\\\\?\\>\\<\\*\\%\\:\\\"\\']*$"));
ui->name->setValidator(fileNameValidator); ui->name->setValidator(fileNameValidator);
updateDocumentation(); updateDocumentation();
@@ -77,16 +76,15 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent) :
const QTextCharFormat tfOption = fs.toTextCharFormat(TextEditor::C_FIELD); const QTextCharFormat tfOption = fs.toTextCharFormat(TextEditor::C_FIELD);
const QTextCharFormat tfParam = fs.toTextCharFormat(TextEditor::C_STRING); const QTextCharFormat tfParam = fs.toTextCharFormat(TextEditor::C_STRING);
const QString css = QString::fromLatin1("span.param {color: %1; background-color: %2;} " const QString css = QString::fromLatin1("span.param {color: %1; background-color: %2;} "
"span.option {color: %3; background-color: %4;} " "span.option {color: %3; background-color: %4;} "
"p { text-align: justify; } ") "p {text-align: justify;}")
.arg(tfParam.foreground().color().name()) .arg(tfParam.foreground().color().name())
.arg(tfParam.background().style() == Qt::NoBrush .arg(tfParam.background().style() == Qt::NoBrush
? QString() : tfParam.background().color().name()) ? QString() : tfParam.background().color().name())
.arg(tfOption.foreground().color().name()) .arg(tfOption.foreground().color().name())
.arg(tfOption.background().style() == Qt::NoBrush .arg(tfOption.background().style() == Qt::NoBrush
? QString() : tfOption.background().color().name()) ? QString() : tfOption.background().color().name());
;
ui->documentation->document()->setDefaultStyleSheet(css); ui->documentation->document()->setDefaultStyleSheet(css);
} }

View File

@@ -32,7 +32,6 @@ namespace Beautifier {
namespace Internal { namespace Internal {
class AbstractSettings; class AbstractSettings;
namespace Ui { class ConfigurationDialog; } namespace Ui { class ConfigurationDialog; }
class ConfigurationDialog : public QDialog class ConfigurationDialog : public QDialog
@@ -40,7 +39,7 @@ class ConfigurationDialog : public QDialog
Q_OBJECT Q_OBJECT
public: public:
explicit ConfigurationDialog(QWidget *parent = 0); explicit ConfigurationDialog(QWidget *parent = nullptr);
~ConfigurationDialog(); ~ConfigurationDialog();
void setSettings(AbstractSettings *settings); void setSettings(AbstractSettings *settings);
@@ -49,13 +48,11 @@ public:
void setKey(const QString &key); void setKey(const QString &key);
QString value() const; QString value() const;
private slots: private:
void updateOkButton(); void updateOkButton();
void updateDocumentation(const QString &word = QString(), const QString &docu = QString()); void updateDocumentation(const QString &word = QString(), const QString &docu = QString());
private:
Ui::ConfigurationDialog *ui; Ui::ConfigurationDialog *ui;
AbstractSettings *m_settings; AbstractSettings *m_settings = nullptr;
QString m_currentKey; QString m_currentKey;
}; };

View File

@@ -46,7 +46,7 @@ ConfigurationSyntaxHighlighter::ConfigurationSyntaxHighlighter(QTextDocument *pa
m_formatKeyword = fs.toTextCharFormat(TextEditor::C_FIELD); m_formatKeyword = fs.toTextCharFormat(TextEditor::C_FIELD);
m_formatComment = fs.toTextCharFormat(TextEditor::C_COMMENT); m_formatComment = fs.toTextCharFormat(TextEditor::C_COMMENT);
m_expressionComment.setPattern(QLatin1String("#[^\\n]*")); m_expressionComment.setPattern("#[^\\n]*");
m_expressionComment.setMinimal(false); m_expressionComment.setMinimal(false);
} }
@@ -57,13 +57,12 @@ void ConfigurationSyntaxHighlighter::setKeywords(const QStringList &keywords)
// Check for empty keywords since they can cause an endless loop in highlightBlock(). // Check for empty keywords since they can cause an endless loop in highlightBlock().
QStringList pattern; QStringList pattern;
foreach (const QString &word, keywords) { for (const QString &word : keywords) {
if (!word.isEmpty()) if (!word.isEmpty())
pattern << QRegExp::escape(word); pattern << QRegExp::escape(word);
} }
m_expressionKeyword.setPattern(QLatin1String("(?:\\s|^)(") + pattern.join(QLatin1Char('|')) m_expressionKeyword.setPattern("(?:\\s|^)(" + pattern.join('|') + ")(?=\\s|\\:|\\=|\\,|$)");
+ QLatin1String(")(?=\\s|\\:|\\=|\\,|$)"));
} }
void ConfigurationSyntaxHighlighter::setCommentExpression(const QRegExp &rx) void ConfigurationSyntaxHighlighter::setCommentExpression(const QRegExp &rx)
@@ -92,12 +91,11 @@ void ConfigurationSyntaxHighlighter::highlightBlock(const QString &text)
} }
} }
ConfigurationEditor::ConfigurationEditor(QWidget *parent) ConfigurationEditor::ConfigurationEditor(QWidget *parent) :
: QPlainTextEdit(parent) QPlainTextEdit(parent),
, m_settings(0) m_completer(new QCompleter(this)),
, m_completer(new QCompleter(this)) m_model(new QStringListModel(QStringList(), m_completer)),
, m_model(new QStringListModel(QStringList(), m_completer)) m_highlighter(new ConfigurationSyntaxHighlighter(document()))
, m_highlighter(new ConfigurationSyntaxHighlighter(document()))
{ {
m_completer->setModel(m_model); m_completer->setModel(m_model);
m_completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); m_completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel);
@@ -203,13 +201,13 @@ QTextCursor ConfigurationEditor::cursorForTextUnderCursor(QTextCursor tc) const
tc.movePosition(QTextCursor::StartOfWord, QTextCursor::MoveAnchor); tc.movePosition(QTextCursor::StartOfWord, QTextCursor::MoveAnchor);
QChar ch = document()->characterAt(tc.position() - 1); QChar ch = document()->characterAt(tc.position() - 1);
while (!(ch.isNull() || ch.isSpace() || ch == QLatin1Char(':') || ch == QLatin1Char(','))) { while (!(ch.isNull() || ch.isSpace() || ch == ':' || ch == ',')) {
tc.movePosition(QTextCursor::PreviousCharacter, QTextCursor::MoveAnchor); tc.movePosition(QTextCursor::PreviousCharacter, QTextCursor::MoveAnchor);
ch = document()->characterAt(tc.position() - 1); ch = document()->characterAt(tc.position() - 1);
} }
tc.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); tc.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);
ch = document()->characterAt(tc.position()); ch = document()->characterAt(tc.position());
while (!(ch.isNull() || ch.isSpace() || ch == QLatin1Char(':') || ch == QLatin1Char(','))) { while (!(ch.isNull() || ch.isSpace() || ch == ':' || ch == ',')) {
tc.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor); tc.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
ch = document()->characterAt(tc.position()); ch = document()->characterAt(tc.position());
} }
@@ -246,7 +244,7 @@ void ConfigurationEditor::updateDocumentation()
// in front of a colon for providing a documentation. // in front of a colon for providing a documentation.
cursor.movePosition(QTextCursor::PreviousWord); cursor.movePosition(QTextCursor::PreviousWord);
cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
const int pos = cursor.selectedText().lastIndexOf(QLatin1Char(',')); const int pos = cursor.selectedText().lastIndexOf(',');
if (-1 != pos) { if (-1 != pos) {
cursor.setPosition(cursor.position() + pos); cursor.setPosition(cursor.position() + pos);
cursor.movePosition(QTextCursor::NextWord); cursor.movePosition(QTextCursor::NextWord);

View File

@@ -25,7 +25,6 @@
#pragma once #pragma once
#include <QPlainTextEdit> #include <QPlainTextEdit>
#include <QRegExp> #include <QRegExp>
#include <QString> #include <QString>
@@ -35,7 +34,6 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QCompleter; class QCompleter;
class QRegExp;
class QStringListModel; class QStringListModel;
class QTextDocument; class QTextDocument;
QT_END_NAMESPACE QT_END_NAMESPACE
@@ -69,7 +67,7 @@ class ConfigurationEditor : public QPlainTextEdit
Q_OBJECT Q_OBJECT
public: public:
explicit ConfigurationEditor(QWidget *parent = 0); explicit ConfigurationEditor(QWidget *parent = nullptr);
void setSettings(AbstractSettings *settings); void setSettings(AbstractSettings *settings);
void setCommentExpression(const QRegExp &rx); void setCommentExpression(const QRegExp &rx);
@@ -77,17 +75,15 @@ protected:
bool eventFilter(QObject *object, QEvent *event) override; bool eventFilter(QObject *object, QEvent *event) override;
void keyPressEvent(QKeyEvent *event) override; void keyPressEvent(QKeyEvent *event) override;
private slots:
void insertCompleterText(const QString &text);
void updateDocumentation();
signals: signals:
void documentationChanged(const QString &word, const QString &documentation); void documentationChanged(const QString &word, const QString &documentation);
private: private:
void insertCompleterText(const QString &text);
void updateDocumentation();
QTextCursor cursorForTextUnderCursor(QTextCursor tc = QTextCursor()) const; QTextCursor cursorForTextUnderCursor(QTextCursor tc = QTextCursor()) const;
AbstractSettings *m_settings; AbstractSettings *m_settings = nullptr;
QCompleter *m_completer; QCompleter *m_completer;
QStringListModel *m_model; QStringListModel *m_model;
ConfigurationSyntaxHighlighter *m_highlighter; ConfigurationSyntaxHighlighter *m_highlighter;

View File

@@ -29,15 +29,12 @@
#include "abstractsettings.h" #include "abstractsettings.h"
#include "configurationdialog.h" #include "configurationdialog.h"
#include <QPointer>
namespace Beautifier { namespace Beautifier {
namespace Internal { namespace Internal {
ConfigurationPanel::ConfigurationPanel(QWidget *parent) : ConfigurationPanel::ConfigurationPanel(QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::ConfigurationPanel), ui(new Ui::ConfigurationPanel)
m_settings(0)
{ {
ui->setupUi(this); ui->setupUi(this);
connect(ui->add, &QPushButton::clicked, this, &ConfigurationPanel::add); connect(ui->add, &QPushButton::clicked, this, &ConfigurationPanel::add);
@@ -81,7 +78,7 @@ void ConfigurationPanel::add()
ConfigurationDialog dialog; ConfigurationDialog dialog;
dialog.setWindowTitle(tr("Add Configuration")); dialog.setWindowTitle(tr("Add Configuration"));
dialog.setSettings(m_settings); dialog.setSettings(m_settings);
if (QDialog::Accepted == dialog.exec()) { if (dialog.exec() == QDialog::Accepted) {
const QString key = dialog.key(); const QString key = dialog.key();
m_settings->setStyle(key, dialog.value()); m_settings->setStyle(key, dialog.value());
populateConfigurations(key); populateConfigurations(key);
@@ -95,7 +92,7 @@ void ConfigurationPanel::edit()
dialog.setWindowTitle(tr("Edit Configuration")); dialog.setWindowTitle(tr("Edit Configuration"));
dialog.setSettings(m_settings); dialog.setSettings(m_settings);
dialog.setKey(key); dialog.setKey(key);
if (QDialog::Accepted == dialog.exec()) { if (dialog.exec() == QDialog::Accepted) {
const QString newKey = dialog.key(); const QString newKey = dialog.key();
if (newKey == key) { if (newKey == key) {
m_settings->setStyle(key, dialog.value()); m_settings->setStyle(key, dialog.value());
@@ -108,7 +105,7 @@ void ConfigurationPanel::edit()
void ConfigurationPanel::populateConfigurations(const QString &key) void ConfigurationPanel::populateConfigurations(const QString &key)
{ {
ui->configurations->blockSignals(true); const bool block = ui->configurations->blockSignals(true);
const QString currentText = (!key.isEmpty()) ? key : ui->configurations->currentText(); const QString currentText = (!key.isEmpty()) ? key : ui->configurations->currentText();
ui->configurations->clear(); ui->configurations->clear();
ui->configurations->addItems(m_settings->styles()); ui->configurations->addItems(m_settings->styles());
@@ -116,14 +113,13 @@ void ConfigurationPanel::populateConfigurations(const QString &key)
if (textIndex != -1) if (textIndex != -1)
ui->configurations->setCurrentIndex(textIndex); ui->configurations->setCurrentIndex(textIndex);
updateButtons(); updateButtons();
ui->configurations->blockSignals(false); ui->configurations->blockSignals(block);
} }
void ConfigurationPanel::updateButtons() void ConfigurationPanel::updateButtons()
{ {
const bool enabled const bool enabled = ((ui->configurations->count() > 0)
= ((ui->configurations->count() > 0) && !m_settings->styleIsReadOnly(ui->configurations->currentText()));
&& !m_settings->styleIsReadOnly(ui->configurations->currentText()));
ui->remove->setEnabled(enabled); ui->remove->setEnabled(enabled);
ui->edit->setEnabled(enabled); ui->edit->setEnabled(enabled);
} }

View File

@@ -31,8 +31,6 @@ namespace Beautifier {
namespace Internal { namespace Internal {
class AbstractSettings; class AbstractSettings;
class ConfigurationDialog;
namespace Ui { class ConfigurationPanel; } namespace Ui { class ConfigurationPanel; }
class ConfigurationPanel : public QWidget class ConfigurationPanel : public QWidget
@@ -40,22 +38,20 @@ class ConfigurationPanel : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ConfigurationPanel(QWidget *parent = 0); explicit ConfigurationPanel(QWidget *parent = nullptr);
~ConfigurationPanel(); ~ConfigurationPanel();
void setSettings(AbstractSettings *settings); void setSettings(AbstractSettings *settings);
void setCurrentConfiguration(const QString &text); void setCurrentConfiguration(const QString &text);
QString currentConfiguration() const; QString currentConfiguration() const;
private slots: private:
void remove(); void remove();
void add(); void add();
void edit(); void edit();
void updateButtons(); void updateButtons();
private:
Ui::ConfigurationPanel *ui; Ui::ConfigurationPanel *ui;
AbstractSettings *m_settings; AbstractSettings *m_settings = nullptr;
void populateConfigurations(const QString &key = QString()); void populateConfigurations(const QString &key = QString());
}; };

View File

@@ -39,8 +39,6 @@
#include <coreplugin/actionmanager/command.h> #include <coreplugin/actionmanager/command.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <cppeditor/cppeditorconstants.h> #include <cppeditor/cppeditorconstants.h>
#include <projectexplorer/projecttree.h> #include <projectexplorer/projecttree.h>
@@ -58,8 +56,6 @@ namespace Uncrustify {
Uncrustify::Uncrustify(BeautifierPlugin *parent) : Uncrustify::Uncrustify(BeautifierPlugin *parent) :
BeautifierAbstractTool(parent), BeautifierAbstractTool(parent),
m_beautifierPlugin(parent), m_beautifierPlugin(parent),
m_formatFile(nullptr),
m_formatRange(nullptr),
m_settings(new UncrustifySettings) m_settings(new UncrustifySettings)
{ {
} }
@@ -72,7 +68,7 @@ Uncrustify::~Uncrustify()
bool Uncrustify::initialize() bool Uncrustify::initialize()
{ {
Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::Uncrustify::MENU_ID); Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::Uncrustify::MENU_ID);
menu->menu()->setTitle(QLatin1String(Constants::Uncrustify::DISPLAY_NAME)); menu->menu()->setTitle(Constants::Uncrustify::DISPLAY_NAME);
m_formatFile = new QAction(BeautifierPlugin::msgFormatCurrentFile(), this); m_formatFile = new QAction(BeautifierPlugin::msgFormatCurrentFile(), this);
Core::Command *cmd Core::Command *cmd
@@ -101,8 +97,7 @@ void Uncrustify::updateActions(Core::IEditor *editor)
QList<QObject *> Uncrustify::autoReleaseObjects() QList<QObject *> Uncrustify::autoReleaseObjects()
{ {
UncrustifyOptionsPage *optionsPage = new UncrustifyOptionsPage(m_settings, this); return {new UncrustifyOptionsPage(m_settings, this)};
return QList<QObject *>() << optionsPage;
} }
void Uncrustify::formatFile() void Uncrustify::formatFile()
@@ -110,7 +105,7 @@ void Uncrustify::formatFile()
const QString cfgFileName = configurationFile(); const QString cfgFileName = configurationFile();
if (cfgFileName.isEmpty()) { if (cfgFileName.isEmpty()) {
BeautifierPlugin::showError(BeautifierPlugin::msgCannotGetConfigurationFile( BeautifierPlugin::showError(BeautifierPlugin::msgCannotGetConfigurationFile(
QLatin1String(Constants::Uncrustify::DISPLAY_NAME))); Constants::Uncrustify::DISPLAY_NAME));
} else { } else {
m_beautifierPlugin->formatCurrentFile(command(cfgFileName)); m_beautifierPlugin->formatCurrentFile(command(cfgFileName));
} }
@@ -121,7 +116,7 @@ void Uncrustify::formatSelectedText()
const QString cfgFileName = configurationFile(); const QString cfgFileName = configurationFile();
if (cfgFileName.isEmpty()) { if (cfgFileName.isEmpty()) {
BeautifierPlugin::showError(BeautifierPlugin::msgCannotGetConfigurationFile( BeautifierPlugin::showError(BeautifierPlugin::msgCannotGetConfigurationFile(
QLatin1String(Constants::Uncrustify::DISPLAY_NAME))); Constants::Uncrustify::DISPLAY_NAME));
return; return;
} }
@@ -154,18 +149,18 @@ QString Uncrustify::configurationFile() const
if (const ProjectExplorer::Project *project if (const ProjectExplorer::Project *project
= ProjectExplorer::ProjectTree::currentProject()) { = ProjectExplorer::ProjectTree::currentProject()) {
const QStringList files = project->files(ProjectExplorer::Project::AllFiles); const QStringList files = project->files(ProjectExplorer::Project::AllFiles);
foreach (const QString &file, files) { for (const QString &file : files) {
if (!file.endsWith(QLatin1String("cfg"))) if (!file.endsWith("cfg"))
continue; continue;
const QFileInfo fi(file); const QFileInfo fi(file);
if (fi.isReadable() && fi.fileName() == QLatin1String("uncrustify.cfg")) if (fi.isReadable() && fi.fileName() == "uncrustify.cfg")
return file; return file;
} }
} }
} }
if (m_settings->useHomeFile()) { if (m_settings->useHomeFile()) {
const QString file = QDir::home().filePath(QLatin1String("uncrustify.cfg")); const QString file = QDir::home().filePath("uncrustify.cfg");
if (QFile::exists(file)) if (QFile::exists(file))
return file; return file;
} }
@@ -179,17 +174,17 @@ Command Uncrustify::command(const QString &cfgFile, bool fragment) const
command.setExecutable(m_settings->command()); command.setExecutable(m_settings->command());
command.setProcessing(Command::PipeProcessing); command.setProcessing(Command::PipeProcessing);
if (m_settings->version() >= 62) { if (m_settings->version() >= 62) {
command.addOption(QLatin1String("--assume")); command.addOption("--assume");
command.addOption(QLatin1String("%file")); command.addOption("%file");
} else { } else {
command.addOption(QLatin1String("-l")); command.addOption("-l");
command.addOption(QLatin1String("cpp")); command.addOption("cpp");
} }
command.addOption(QLatin1String("-L")); command.addOption("-L");
command.addOption(QLatin1String("1-2")); command.addOption("1-2");
if (fragment) if (fragment)
command.addOption(QLatin1String("--frag")); command.addOption("--frag");
command.addOption(QLatin1String("-c")); command.addOption("-c");
command.addOption(cfgFile); command.addOption(cfgFile);
return command; return command;
} }

View File

@@ -44,20 +44,18 @@ class Uncrustify : public BeautifierAbstractTool
Q_OBJECT Q_OBJECT
public: public:
explicit Uncrustify(BeautifierPlugin *parent = 0); explicit Uncrustify(BeautifierPlugin *parent = nullptr);
virtual ~Uncrustify(); virtual ~Uncrustify();
bool initialize() override; bool initialize() override;
void updateActions(Core::IEditor *editor) override; void updateActions(Core::IEditor *editor) override;
QList<QObject *> autoReleaseObjects() override; QList<QObject *> autoReleaseObjects() override;
private slots: private:
void formatFile(); void formatFile();
void formatSelectedText(); void formatSelectedText();
private:
BeautifierPlugin *m_beautifierPlugin; BeautifierPlugin *m_beautifierPlugin;
QAction *m_formatFile; QAction *m_formatFile = nullptr;
QAction *m_formatRange; QAction *m_formatRange = nullptr;
UncrustifySettings *m_settings; UncrustifySettings *m_settings;
QString configurationFile() const; QString configurationFile() const;
Command command(const QString &cfgFile, bool fragment = false) const; Command command(const QString &cfgFile, bool fragment = false) const;

View File

@@ -41,18 +41,17 @@ namespace Internal {
namespace Uncrustify { namespace Uncrustify {
UncrustifyOptionsPageWidget::UncrustifyOptionsPageWidget(UncrustifySettings *settings, UncrustifyOptionsPageWidget::UncrustifyOptionsPageWidget(UncrustifySettings *settings,
QWidget *parent) QWidget *parent) :
: QWidget(parent) QWidget(parent),
, ui(new Ui::UncrustifyOptionsPage) ui(new Ui::UncrustifyOptionsPage),
, m_settings(settings) m_settings(settings)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->useHomeFile->setText(ui->useHomeFile->text().replace( ui->useHomeFile->setText(ui->useHomeFile->text().replace(
QLatin1String("HOME"), "HOME", QDir::toNativeSeparators(QDir::home().absolutePath())));
QDir::toNativeSeparators(QDir::home().absolutePath())));
ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand); ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand);
ui->command->setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle( ui->command->setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle(
QLatin1String(Constants::Uncrustify::DISPLAY_NAME))); Constants::Uncrustify::DISPLAY_NAME));
connect(ui->command, &Utils::PathChooser::validChanged, ui->options, &QWidget::setEnabled); connect(ui->command, &Utils::PathChooser::validChanged, ui->options, &QWidget::setEnabled);
ui->configurations->setSettings(m_settings); ui->configurations->setSettings(m_settings);
} }
@@ -83,18 +82,15 @@ void UncrustifyOptionsPageWidget::apply()
m_settings->save(); m_settings->save();
} }
/* ---------------------------------------------------------------------------------------------- */
UncrustifyOptionsPage::UncrustifyOptionsPage(UncrustifySettings *settings, QObject *parent) : UncrustifyOptionsPage::UncrustifyOptionsPage(UncrustifySettings *settings, QObject *parent) :
IOptionsPage(parent), IOptionsPage(parent),
m_widget(0),
m_settings(settings) m_settings(settings)
{ {
setId(Constants::Uncrustify::OPTION_ID); setId(Constants::Uncrustify::OPTION_ID);
setDisplayName(tr("Uncrustify")); setDisplayName(tr("Uncrustify"));
setCategory(Constants::OPTION_CATEGORY); setCategory(Constants::OPTION_CATEGORY);
setDisplayCategory(QCoreApplication::translate("Beautifier", Constants::OPTION_TR_CATEGORY)); setDisplayCategory(QCoreApplication::translate("Beautifier", Constants::OPTION_TR_CATEGORY));
setCategoryIcon(QLatin1String(Constants::OPTION_CATEGORY_ICON)); setCategoryIcon(Constants::OPTION_CATEGORY_ICON);
} }
QWidget *UncrustifyOptionsPage::widget() QWidget *UncrustifyOptionsPage::widget()

View File

@@ -43,7 +43,7 @@ class UncrustifyOptionsPageWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit UncrustifyOptionsPageWidget(UncrustifySettings *settings, QWidget *parent = 0); explicit UncrustifyOptionsPageWidget(UncrustifySettings *settings, QWidget *parent = nullptr);
virtual ~UncrustifyOptionsPageWidget(); virtual ~UncrustifyOptionsPageWidget();
void restore(); void restore();
void apply(); void apply();
@@ -58,7 +58,7 @@ class UncrustifyOptionsPage : public Core::IOptionsPage
Q_OBJECT Q_OBJECT
public: public:
explicit UncrustifyOptionsPage(UncrustifySettings *settings, QObject *parent = 0); explicit UncrustifyOptionsPage(UncrustifySettings *settings, QObject *parent = nullptr);
QWidget *widget() override; QWidget *widget() override;
void apply() override; void apply() override;
void finish() override; void finish() override;

View File

@@ -34,7 +34,6 @@
#include <QDateTime> #include <QDateTime>
#include <QFile> #include <QFile>
#include <QFileInfo> #include <QFileInfo>
#include <QProcess>
#include <QRegularExpression> #include <QRegularExpression>
#include <QXmlStreamWriter> #include <QXmlStreamWriter>
@@ -43,91 +42,90 @@ namespace Internal {
namespace Uncrustify { namespace Uncrustify {
namespace { namespace {
const QString kUseOtherFiles = QLatin1String("useOtherFiles"); const char USE_OTHER_FILES[] = "useOtherFiles";
const QString kUseHomeFile = QLatin1String("useHomeFile"); const char USE_HOME_FILE[] = "useHomeFile";
const QString kUseCustomStyle = QLatin1String("useCustomStyle"); const char USE_CUSTOM_STYLE[] = "useCustomStyle";
const QString kCustomStyle = QLatin1String("customStyle"); const char CUSTOM_STYLE[] = "customStyle";
const QString kFormatEntireFileFallback = QLatin1String("formatEntireFileFallback"); const char FORMAT_ENTIRE_FILE_FALLBACK[] = "formatEntireFileFallback";
} }
UncrustifySettings::UncrustifySettings() : UncrustifySettings::UncrustifySettings() :
AbstractSettings(QLatin1String(Constants::Uncrustify::SETTINGS_NAME), QLatin1String(".cfg")) AbstractSettings(Constants::Uncrustify::SETTINGS_NAME, ".cfg")
{ {
connect(&m_versionProcess, connect(&m_versionProcess,
static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
this, &UncrustifySettings::parseVersionProcessResult); this, &UncrustifySettings::parseVersionProcessResult);
setCommand(QLatin1String("uncrustify")); setCommand("uncrustify");
m_settings.insert(kUseOtherFiles, QVariant(true)); m_settings.insert(USE_OTHER_FILES, QVariant(true));
m_settings.insert(kUseHomeFile, QVariant(false)); m_settings.insert(USE_HOME_FILE, QVariant(false));
m_settings.insert(kUseCustomStyle, QVariant(false)); m_settings.insert(USE_CUSTOM_STYLE, QVariant(false));
m_settings.insert(kCustomStyle, QVariant()); m_settings.insert(CUSTOM_STYLE, QVariant());
m_settings.insert(kFormatEntireFileFallback, QVariant(true)); m_settings.insert(FORMAT_ENTIRE_FILE_FALLBACK, QVariant(true));
read(); read();
} }
bool UncrustifySettings::useOtherFiles() const bool UncrustifySettings::useOtherFiles() const
{ {
return m_settings.value(kUseOtherFiles).toBool(); return m_settings.value(USE_OTHER_FILES).toBool();
} }
void UncrustifySettings::setUseOtherFiles(bool useOtherFiles) void UncrustifySettings::setUseOtherFiles(bool useOtherFiles)
{ {
m_settings.insert(kUseOtherFiles, QVariant(useOtherFiles)); m_settings.insert(USE_OTHER_FILES, QVariant(useOtherFiles));
} }
bool UncrustifySettings::useHomeFile() const bool UncrustifySettings::useHomeFile() const
{ {
return m_settings.value(kUseHomeFile).toBool(); return m_settings.value(USE_HOME_FILE).toBool();
} }
void UncrustifySettings::setUseHomeFile(bool useHomeFile) void UncrustifySettings::setUseHomeFile(bool useHomeFile)
{ {
m_settings.insert(kUseHomeFile, QVariant(useHomeFile)); m_settings.insert(USE_HOME_FILE, QVariant(useHomeFile));
} }
bool UncrustifySettings::useCustomStyle() const bool UncrustifySettings::useCustomStyle() const
{ {
return m_settings.value(kUseCustomStyle).toBool(); return m_settings.value(USE_CUSTOM_STYLE).toBool();
} }
void UncrustifySettings::setUseCustomStyle(bool useCustomStyle) void UncrustifySettings::setUseCustomStyle(bool useCustomStyle)
{ {
m_settings.insert(kUseCustomStyle, QVariant(useCustomStyle)); m_settings.insert(USE_CUSTOM_STYLE, QVariant(useCustomStyle));
} }
QString UncrustifySettings::customStyle() const QString UncrustifySettings::customStyle() const
{ {
return m_settings.value(kCustomStyle).toString(); return m_settings.value(CUSTOM_STYLE).toString();
} }
void UncrustifySettings::setCustomStyle(const QString &customStyle) void UncrustifySettings::setCustomStyle(const QString &customStyle)
{ {
m_settings.insert(kCustomStyle, QVariant(customStyle)); m_settings.insert(CUSTOM_STYLE, QVariant(customStyle));
} }
bool UncrustifySettings::formatEntireFileFallback() const bool UncrustifySettings::formatEntireFileFallback() const
{ {
return m_settings.value(kFormatEntireFileFallback).toBool(); return m_settings.value(FORMAT_ENTIRE_FILE_FALLBACK).toBool();
} }
void UncrustifySettings::setFormatEntireFileFallback(bool formatEntireFileFallback) void UncrustifySettings::setFormatEntireFileFallback(bool formatEntireFileFallback)
{ {
m_settings.insert(kFormatEntireFileFallback, QVariant(formatEntireFileFallback)); m_settings.insert(FORMAT_ENTIRE_FILE_FALLBACK, QVariant(formatEntireFileFallback));
} }
QString UncrustifySettings::documentationFilePath() const QString UncrustifySettings::documentationFilePath() const
{ {
return Core::ICore::userResourcePath() + QLatin1Char('/') return Core::ICore::userResourcePath() + '/' + Beautifier::Constants::SETTINGS_DIRNAME + '/'
+ QLatin1String(Beautifier::Constants::SETTINGS_DIRNAME) + QLatin1Char('/') + Beautifier::Constants::DOCUMENTATION_DIRNAME + '/'
+ QLatin1String(Beautifier::Constants::DOCUMENTATION_DIRNAME) + QLatin1Char('/') + Constants::Uncrustify::SETTINGS_NAME + ".xml";
+ QLatin1String(Constants::Uncrustify::SETTINGS_NAME) + QLatin1String(".xml");
} }
void UncrustifySettings::createDocumentationFile() const void UncrustifySettings::createDocumentationFile() const
{ {
QProcess process; QProcess process;
process.start(command(), QStringList() << QLatin1String("--show-config")); process.start(command(), {"--show-config"});
process.waitForFinished(2000); // show config should be really fast. process.waitForFinished(2000); // show config should be really fast.
if (process.error() != QProcess::UnknownError) if (process.error() != QProcess::UnknownError)
return; return;
@@ -142,33 +140,30 @@ void UncrustifySettings::createDocumentationFile() const
bool contextWritten = false; bool contextWritten = false;
QXmlStreamWriter stream(&file); QXmlStreamWriter stream(&file);
stream.setAutoFormatting(true); stream.setAutoFormatting(true);
stream.writeStartDocument(QLatin1String("1.0"), true); stream.writeStartDocument("1.0", true);
stream.writeComment(QLatin1String("Created ") stream.writeComment("Created " + QDateTime::currentDateTime().toString(Qt::ISODate));
+ QDateTime::currentDateTime().toString(Qt::ISODate)); stream.writeStartElement(Constants::DOCUMENTATION_XMLROOT);
stream.writeStartElement(QLatin1String(Constants::DOCUMENTATION_XMLROOT));
const QStringList lines = QString::fromUtf8(process.readAll()).split(QLatin1Char('\n')); const QStringList lines = QString::fromUtf8(process.readAll()).split('\n');
const int totalLines = lines.count(); const int totalLines = lines.count();
for (int i = 0; i < totalLines; ++i) { for (int i = 0; i < totalLines; ++i) {
const QString &line = lines.at(i); const QString &line = lines.at(i);
if (line.startsWith(QLatin1Char('#')) || line.trimmed().isEmpty()) if (line.startsWith('#') || line.trimmed().isEmpty())
continue; continue;
const int firstSpace = line.indexOf(QLatin1Char(' ')); const int firstSpace = line.indexOf(' ');
const QString keyword = line.left(firstSpace); const QString keyword = line.left(firstSpace);
const QString options = line.right(line.size() - firstSpace).trimmed(); const QString options = line.right(line.size() - firstSpace).trimmed();
QStringList docu; QStringList docu;
while (++i < totalLines) { while (++i < totalLines) {
const QString &subline = lines.at(i); const QString &subline = lines.at(i);
if (line.startsWith(QLatin1Char('#')) || subline.trimmed().isEmpty()) { if (line.startsWith('#') || subline.trimmed().isEmpty()) {
const QString text = QLatin1String("<p><span class=\"option\">") + keyword const QString text = "<p><span class=\"option\">" + keyword
+ QLatin1String("</span> <span class=\"param\">") + options + "</span> <span class=\"param\">" + options
+ QLatin1String("</span></p><p>") + "</span></p><p>" + docu.join(' ').toHtmlEscaped() + "</p>";
+ (docu.join(QLatin1Char(' ')).toHtmlEscaped()) stream.writeStartElement(Constants::DOCUMENTATION_XMLENTRY);
+ QLatin1String("</p>"); stream.writeTextElement(Constants::DOCUMENTATION_XMLKEY, keyword);
stream.writeStartElement(QLatin1String(Constants::DOCUMENTATION_XMLENTRY)); stream.writeTextElement(Constants::DOCUMENTATION_XMLDOC, text);
stream.writeTextElement(QLatin1String(Constants::DOCUMENTATION_XMLKEY), keyword);
stream.writeTextElement(QLatin1String(Constants::DOCUMENTATION_XMLDOC), text);
stream.writeEndElement(); stream.writeEndElement();
contextWritten = true; contextWritten = true;
break; break;
@@ -192,7 +187,7 @@ void UncrustifySettings::createDocumentationFile() const
static bool parseVersion(const QString &text, int &version) static bool parseVersion(const QString &text, int &version)
{ {
// The version in Uncrustify is printed like "uncrustify 0.62" // The version in Uncrustify is printed like "uncrustify 0.62"
const QRegularExpression rx(QLatin1String("([0-9]{1})\\.([0-9]{2})")); const QRegularExpression rx("([0-9]{1})\\.([0-9]{2})");
const QRegularExpressionMatch match = rx.match(text); const QRegularExpressionMatch match = rx.match(text);
if (!match.hasMatch()) if (!match.hasMatch())
return false; return false;
@@ -209,7 +204,7 @@ void UncrustifySettings::updateVersion()
m_versionProcess.kill(); m_versionProcess.kill();
m_versionProcess.waitForFinished(); m_versionProcess.waitForFinished();
} }
m_versionProcess.start(command(), QStringList() << QLatin1String("--version")); m_versionProcess.start(command(), {"--version"});
} }
void UncrustifySettings::parseVersionProcessResult(int exitCode, QProcess::ExitStatus exitStatus) void UncrustifySettings::parseVersionProcessResult(int exitCode, QProcess::ExitStatus exitStatus)